diff options
author | Baek Chang <breakchange@gmail.com> | 2011-05-03 10:52:34 -0700 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2011-05-04 09:21:34 +0200 |
commit | 516569bbba7eb0e03f2892a67d8559c4d0bcd17a (patch) | |
tree | dff52ba583a44ec746cc72994e9a140e7f7eb42b | |
parent | e4735ddebd945d8b9f99f8e467830108080ae830 (diff) | |
download | alsa-lib-516569bbba7eb0e03f2892a67d8559c4d0bcd17a.tar.gz |
UCM: fix memory leak when executing cset commands
fix memory leak when executing cset commands.
snd_ctl_elem's are allocated, but never free'ed
Signed-off-by: Takashi Iwai <tiwai@suse.de>
-rw-r--r-- | src/ucm/main.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/src/ucm/main.c b/src/ucm/main.c index 86f29e33..f8ceeebd 100644 --- a/src/ucm/main.c +++ b/src/ucm/main.c @@ -173,7 +173,8 @@ static int execute_cset(snd_ctl_t *ctl, char *cset) pos = strrchr(cset, ' '); if (pos == NULL) { uc_error("undefined value for cset >%s<", cset); - return -EINVAL; + err = -EINVAL; + goto __fail; } *pos = '\0'; err = snd_ctl_ascii_elem_id_parse(id, cset); @@ -196,6 +197,14 @@ static int execute_cset(snd_ctl_t *ctl, char *cset) err = 0; __fail: *pos = ' '; + + if (id != NULL) + free(id); + if (value != NULL) + free(value); + if (info != NULL) + free(info); + return err; } |