From 6a76c01a01a7d554f693f20d4fb66d005ea2766f Mon Sep 17 00:00:00 2001 From: Jaroslav Kysela Date: Fri, 15 Nov 2019 12:52:36 +0100 Subject: [PATCH] ucm: fix memory leaks detected by the coverity checker Signed-off-by: Jaroslav Kysela --- src/ucm/parser.c | 7 ++++++- src/ucm/ucm_subs.c | 1 + 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/ucm/parser.c b/src/ucm/parser.c index afd20336..ed790dc0 100644 --- a/src/ucm/parser.c +++ b/src/ucm/parser.c @@ -650,8 +650,10 @@ static int parse_value(snd_use_case_mgr_t *uc_mgr ATTRIBUTE_UNUSED, return -EINVAL; } err = uc_mgr_add_value(base, id, s); - if (err < 0) + if (err < 0) { + free(s); return err; + } } return 0; @@ -1761,15 +1763,18 @@ int uc_mgr_scan_master_configs(const char **_list[]) err = snd_config_search(cfg, "Syntax", &c); if (err < 0) { uc_error("Syntax field not found in %s", d_name); + snd_config_delete(cfg); continue; } err = snd_config_get_integer(c, &l); if (err < 0) { uc_error("Syntax field is invalid in %s", d_name); + snd_config_delete(cfg); goto __err; } if (l < 2 || l > SYNTAX_VERSION_MAX) { uc_error("Incompatible syntax %d in %s", l, d_name); + snd_config_delete(cfg); goto __err; } err = snd_config_search(cfg, "Comment", &c); diff --git a/src/ucm/ucm_subs.c b/src/ucm/ucm_subs.c index c26fe08b..f20c8e22 100644 --- a/src/ucm/ucm_subs.c +++ b/src/ucm/ucm_subs.c @@ -158,6 +158,7 @@ __rval: if (nsize > size) { nr = realloc(r, nsize); if (nr == NULL) { + free(rval); err = -ENOMEM; goto __error; } -- 2.47.1