]> git.alsa-project.org Git - alsa-lib.git/commitdiff
ucm: fix few memory-leaks in the error paths
authorJaroslav Kysela <perex@perex.cz>
Fri, 8 Jul 2022 19:56:57 +0000 (21:56 +0200)
committerJaroslav Kysela <perex@perex.cz>
Fri, 8 Jul 2022 19:56:57 +0000 (21:56 +0200)
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
src/ucm/main.c
src/ucm/parser.c

index 58ed49dd50d5c9be01ea1808e855276de5363495..ed6d1c94b41a55861705001657a5c2f68c779f9f 100644 (file)
@@ -1481,8 +1481,8 @@ const char *parse_open_variables(snd_use_case_mgr_t *uc_mgr, const char *name)
                        goto skip;
        }
 
-       snd_config_delete(cfg);
 skip:
+       snd_config_delete(cfg);
        return end + 3;
 }
 
index 976aa8be0d9747f977821becec71a4e7528940a3..9e62fa9fa9922d12aee5c6db7838c9a758d989d7 100644 (file)
@@ -415,15 +415,15 @@ static int evaluate_macro1(snd_use_case_mgr_t *uc_mgr,
                n = snd_config_iterator_entry(i);
                err = snd_config_get_id(n, &id);
                if (err < 0)
-                       return err;
+                       goto __err_path;
                err = snd_config_get_ascii(n, &var);
                if (err < 0)
-                       return err;
+                       goto __err_path;
                snprintf(name, sizeof(name), "__%s", id);
                err = uc_mgr_set_variable(uc_mgr, name, var);
                free(var);
                if (err < 0)
-                       return err;
+                       goto __err_path;
        }
 
        /* merge + substitute variables */
@@ -443,11 +443,11 @@ static int evaluate_macro1(snd_use_case_mgr_t *uc_mgr,
                n = snd_config_iterator_entry(i);
                err = snd_config_get_id(n, &id);
                if (err < 0)
-                       return err;
+                       goto __err_path;
                snprintf(name, sizeof(name), "__%s", id);
                err = uc_mgr_delete_variable(uc_mgr, name);
                if (err < 0)
-                       return err;
+                       goto __err_path;
        }
 
 __err_path: