]> git.alsa-project.org Git - alsa-lib.git/commitdiff
ucm: coverity fixes
authorJaroslav Kysela <perex@perex.cz>
Fri, 24 May 2019 19:11:00 +0000 (21:11 +0200)
committerJaroslav Kysela <perex@perex.cz>
Fri, 24 May 2019 19:25:50 +0000 (21:25 +0200)
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
src/ucm/parser.c
src/ucm/utils.c

index ad6bcec78622c1ce5d77c289177ed5bb962da7eb..61d5d7f9c47cf11035a9a3c92832421c22716b64 100644 (file)
@@ -1114,7 +1114,7 @@ static int parse_verb_file(snd_use_case_mgr_t *uc_mgr,
                        if (err < 0) {
                                uc_error("error: %s failed to parse verb",
                                                file);
-                               return err;
+                               goto _err;
                        }
                        continue;
                }
@@ -1126,7 +1126,7 @@ static int parse_verb_file(snd_use_case_mgr_t *uc_mgr,
                        if (err < 0) {
                                uc_error("error: %s failed to parse device",
                                                file);
-                               return err;
+                               goto _err;
                        }
                        continue;
                }
@@ -1138,18 +1138,24 @@ static int parse_verb_file(snd_use_case_mgr_t *uc_mgr,
                        if (err < 0) {
                                uc_error("error: %s failed to parse modifier",
                                                file);
-                               return err;
+                               goto _err;
                        }
                        continue;
                }
        }
 
+       snd_config_delete(cfg);
+
        /* use case verb must have at least 1 device */
        if (list_empty(&verb->device_list)) {
                uc_error("error: no use case device defined", file);
                return -EINVAL;
        }
        return 0;
+
+       _err:
+       snd_config_delete(cfg);
+       return err;
 }
 
 /*
@@ -1399,6 +1405,7 @@ next_card:
 
        return -1;
 }
+
 static int load_master_config(const char *card_name, snd_config_t **cfg)
 {
        char filename[MAX_FILE];
@@ -1610,8 +1617,11 @@ int uc_mgr_scan_master_configs(const char **_list[])
        }
        free(namelist);
 
-       if (err >= 0)
+       if (err >= 0) {
                *_list = list;
+       } else {
+               free(list);
+       }
 
        return err;
 }
index 14227e0aed5b518ffa04876f8e635afd049652f6..efd5a97999b11f499909b7d990477ef31d32ec49 100644 (file)
@@ -58,14 +58,18 @@ int uc_mgr_config_load(const char *file, snd_config_t **cfg)
        int err;
 
        fp = fopen(file, "r");
-       err = fp == NULL ? -errno : snd_input_stdio_attach(&in, fp, 1);
-       if (err < 0) {
+       if (!fp) {
+               err = -errno;
+  __err0:
                uc_error("could not open configuration file %s", file);
                return err;
        }
+       err = snd_input_stdio_attach(&in, fp, 1);
+       if (err < 0)
+               goto __err0;
        err = snd_config_top(&top);
        if (err < 0)
-               return err;
+               goto __err1;
 
        default_path = getenv(ALSA_CONFIG_UCM_VAR);
        if (!default_path || !*default_path)
@@ -88,6 +92,8 @@ int uc_mgr_config_load(const char *file, snd_config_t **cfg)
 
  __err2:
         snd_config_delete(top);
+ __err1:
+       snd_input_close(in);
        return err;
 }