Add some fixes and workarounds for gcc-11 static analyzer.

Not everything is a real bug (false positive rate is very high here),
but the code is actually more readable.
This commit is contained in:
Milan Broz
2021-05-18 16:19:08 +02:00
parent 351d7fefca
commit 413b484774
4 changed files with 17 additions and 1 deletions

View File

@@ -450,6 +450,8 @@ const char *argon2_error_message(int error_code) {
size_t argon2_encodedlen(uint32_t t_cost, uint32_t m_cost, uint32_t parallelism, size_t argon2_encodedlen(uint32_t t_cost, uint32_t m_cost, uint32_t parallelism,
uint32_t saltlen, uint32_t hashlen, argon2_type type) { uint32_t saltlen, uint32_t hashlen, argon2_type type) {
if (!argon2_type2string(type, 0))
return 0;
return strlen("$$v=$m=,t=,p=$$") + strlen(argon2_type2string(type, 0)) + return strlen("$$v=$m=,t=,p=$$") + strlen(argon2_type2string(type, 0)) +
numlen(t_cost) + numlen(m_cost) + numlen(parallelism) + numlen(t_cost) + numlen(m_cost) + numlen(parallelism) +
b64len(saltlen) + b64len(hashlen) + numlen(ARGON2_VERSION_NUMBER) + 1; b64len(saltlen) + b64len(hashlen) + numlen(ARGON2_VERSION_NUMBER) + 1;

View File

@@ -2296,8 +2296,13 @@ static int _dm_target_query_verity(struct crypt_device *cd,
str = strsep(&params, " "); str = strsep(&params, " ");
if (!str) if (!str)
goto err; goto err;
if (!root_hash_sig_key_desc) if (!root_hash_sig_key_desc) {
root_hash_sig_key_desc = strdup(str); root_hash_sig_key_desc = strdup(str);
if (!root_hash_sig_key_desc) {
r = -ENOMEM;
goto err;
}
}
i++; i++;
if (vp) if (vp)
vp->flags |= CRYPT_VERITY_ROOT_HASH_SIGNATURE; vp->flags |= CRYPT_VERITY_ROOT_HASH_SIGNATURE;

View File

@@ -5095,6 +5095,9 @@ const char *crypt_get_cipher_mode(struct crypt_device *cd)
/* INTERNAL only */ /* INTERNAL only */
const char *crypt_get_integrity(struct crypt_device *cd) const char *crypt_get_integrity(struct crypt_device *cd)
{ {
if (!cd)
return NULL;
if (isINTEGRITY(cd->type)) if (isINTEGRITY(cd->type))
return cd->u.integrity.params.integrity; return cd->u.integrity.params.integrity;

View File

@@ -180,6 +180,9 @@ static int device_ready(struct crypt_device *cd, struct device *device)
struct stat st; struct stat st;
size_t tmp_size; size_t tmp_size;
if (!device)
return -EINVAL;
if (device->o_direct) { if (device->o_direct) {
log_dbg(cd, "Trying to open and read device %s with direct-io.", log_dbg(cd, "Trying to open and read device %s with direct-io.",
device_path(device)); device_path(device));
@@ -235,6 +238,9 @@ static int _open_locked(struct crypt_device *cd, struct device *device, int flag
{ {
int fd; int fd;
if (!device)
return -EINVAL;
log_dbg(cd, "Opening locked device %s", device_path(device)); log_dbg(cd, "Opening locked device %s", device_path(device));
if ((flags & O_ACCMODE) != O_RDONLY && device_locked_readonly(device->lh)) { if ((flags & O_ACCMODE) != O_RDONLY && device_locked_readonly(device->lh)) {