From 5be31bbce65d676791cb45a39821ee2eb5a2e469 Mon Sep 17 00:00:00 2001 From: Milan Broz Date: Thu, 27 Sep 2018 20:54:06 +0200 Subject: [PATCH] More warnings fixes. --- lib/libdevmapper.c | 8 ++++---- lib/luks2/luks2_luks1_convert.c | 1 + src/cryptsetup.c | 2 +- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/lib/libdevmapper.c b/lib/libdevmapper.c index 45d646cd..4b431de0 100644 --- a/lib/libdevmapper.c +++ b/lib/libdevmapper.c @@ -394,7 +394,7 @@ static int cipher_c2dm(const char *org_c, const char *org_i, unsigned tag_size, char *i_dm, int i_dm_size) { int c_size = 0, i_size = 0, i; - char cipher[CLEN], mode[CLEN], iv[CLEN], tmp[CLEN]; + char cipher[CLEN], mode[CLEN], iv[CLEN+1], tmp[CLEN]; char capi[CAPIL]; if (!c_dm || !c_dm_size || !i_dm || !i_dm_size) @@ -407,7 +407,7 @@ static int cipher_c2dm(const char *org_c, const char *org_i, unsigned tag_size, i = sscanf(tmp, "%" CLENS "[^-]-%" CLENS "s", mode, iv); if (i == 1) { memset(iv, 0, sizeof(iv)); - strncpy(iv, mode, sizeof(iv)); + strncpy(iv, mode, sizeof(iv)-1); *mode = '\0'; if (snprintf(capi, sizeof(capi), "%s", cipher) < 0) return -EINVAL; @@ -454,7 +454,7 @@ static int cipher_c2dm(const char *org_c, const char *org_i, unsigned tag_size, static int cipher_dm2c(char **org_c, char **org_i, const char *c_dm, const char *i_dm) { char cipher[CLEN], mode[CLEN], iv[CLEN], auth[CLEN]; - char tmp[CAPIL], dmcrypt_tmp[CAPIL*2], capi[CAPIL]; + char tmp[CAPIL], dmcrypt_tmp[CAPIL*2], capi[CAPIL+1]; size_t len; int i; @@ -497,7 +497,7 @@ static int cipher_dm2c(char **org_c, char **org_i, const char *c_dm, const char } else *org_i = NULL; memset(capi, 0, sizeof(capi)); - strncpy(capi, tmp, sizeof(capi)); + strncpy(capi, tmp, sizeof(capi)-1); } i = sscanf(capi, "%" CLENS "[^(](%" CLENS "[^)])", mode, cipher); diff --git a/lib/luks2/luks2_luks1_convert.c b/lib/luks2/luks2_luks1_convert.c index 23e65abd..9d45d000 100644 --- a/lib/luks2/luks2_luks1_convert.c +++ b/lib/luks2/luks2_luks1_convert.c @@ -830,6 +830,7 @@ int LUKS2_luks2_to_luks1(struct crypt_device *cd, struct luks2_hdr *hdr2, struct hdr1->payloadOffset = offset; strncpy(hdr1->uuid, hdr2->uuid, UUID_STRING_L); /* max 36 chars */ + hdr1->uuid[UUID_STRING_L-1] = '\0'; memcpy(hdr1->magic, luksMagic, LUKS_MAGIC_L); diff --git a/src/cryptsetup.c b/src/cryptsetup.c index 8930c508..ed545a11 100644 --- a/src/cryptsetup.c +++ b/src/cryptsetup.c @@ -175,7 +175,7 @@ static int action_open_plain(void) .sector_size = opt_sector_size, }; char *password = NULL; - size_t passwordLen, key_size_max, signatures, + size_t passwordLen, key_size_max, signatures = 0, key_size = (opt_key_size ?: DEFAULT_PLAIN_KEYBITS) / 8; uint32_t activate_flags = 0; int r;