coverity.com fixes - initial round

This commit tries to fix a bunch of issues found
by coverity.com.

Signed-off-by: Jaroslav Kysela <perex@perex.cz>
This commit is contained in:
Jaroslav Kysela 2025-11-10 17:56:27 +01:00
parent f0679e5de2
commit 47f4f9b73b
40 changed files with 283 additions and 133 deletions

View file

@ -189,21 +189,21 @@ static int read_tlv_file(unsigned int **res,
goto __fail;
}
*res = malloc(sz);
if (res == NULL) {
if (*res == NULL) {
err = -ENOMEM;
goto __fail;
}
sz_read = read(fd, *res, sz);
if (sz_read < 0 || (size_t)sz_read != sz) {
err = -EIO;
free(*res);
*res = NULL;
goto __fail_res;
}
/* Check if the tlv file specifies valid size. */
tlv = (struct snd_ctl_tlv *)(*res);
if (tlv->length + 2 * sizeof(unsigned int) != sz) {
snd_error(UCM, "Invalid tlv size: %d", tlv->length);
err = -EINVAL;
__fail_res:
free(*res);
*res = NULL;
}
@ -715,13 +715,13 @@ static int run_device_all_sequence(snd_use_case_mgr_t *uc_mgr, struct use_case_v
struct list_head *pos;
int err;
snd_trace(UCM, "disable all devices sequence for '%s'", verb->name);
if (verb == NULL) {
snd_error(UCM, "disdevall must be executed inside the verb context");
return -ENOENT;
}
snd_trace(UCM, "disable all devices sequence for '%s'", verb->name);
list_for_each(pos, &verb->device_list) {
device = list_entry(pos, struct use_case_device, list);
@ -1533,6 +1533,9 @@ int snd_use_case_mgr_open(snd_use_case_mgr_t **uc_mgr,
snd_trace(UCM, "{API call} open '%s'", card_name);
if (card_name == NULL)
return -EINVAL;
/* create a new UCM */
mgr = calloc(1, sizeof(snd_use_case_mgr_t));
if (mgr == NULL)
@ -1548,12 +1551,12 @@ int snd_use_case_mgr_open(snd_use_case_mgr_t **uc_mgr,
INIT_LIST_HEAD(&mgr->variable_list);
pthread_mutex_init(&mgr->mutex, NULL);
if (card_name && *card_name == '-') {
if (*card_name == '-') {
card_name++;
mgr->suppress_nodev_errors = 1;
}
if (card_name && card_name[0] == '<' && card_name[1] == '<' && card_name[2] == '<')
if (card_name[0] == '<' && card_name[1] == '<' && card_name[2] == '<')
card_name = parse_open_variables(mgr, card_name);
err = uc_mgr_card_open(mgr);
@ -2566,7 +2569,9 @@ static int set_verb_user(snd_use_case_mgr_t *uc_mgr,
verb = NULL;
}
if (uc_mgr->active_verb) {
err = handle_transition_verb(uc_mgr, verb);
err = 0;
if (verb != NULL)
err = handle_transition_verb(uc_mgr, verb);
if (err == 0) {
err = dismantle_use_case(uc_mgr);
if (err < 0)

View file

@ -310,7 +310,8 @@ static int if_eval_path(snd_use_case_mgr_t *uc_mgr, snd_config_t *eval)
amode = X_OK;
} else {
snd_error(UCM, "Path unknown mode '%s' (If.Condition.Mode)", s);
free(s);
if (s != mode)
free(s);
return -EINVAL;
}
if (s != mode)

View file

@ -152,11 +152,12 @@ int uc_mgr_define_regex(snd_use_case_mgr_t *uc_mgr, const char *name,
if (err < 0)
return err;
err = regcomp(&re, s, options);
free(s);
if (err) {
snd_error(UCM, "Regex '%s' compilation failed (code %d)", s, err);
free(s);
return -EINVAL;
}
free(s);
err = uc_mgr_get_substituted_value(uc_mgr, &s, string);
if (err < 0) {

View file

@ -612,7 +612,7 @@ static char *rval_sysfs_main(snd_use_case_mgr_t *uc_mgr, const char *top_path, c
if (s == NULL)
return NULL;
len = s - id - 1;
if ((size_t)(len - 1) > sizeof(link) - 1)
if ((size_t)len > sizeof(link) - 1)
return NULL;
strncpy(link, id + 1, len);
link[len] = '\0';