[alsa-devel] [PATCH] [ALSA][UCM] fix memory leak when executing cset commands. snd_ctl_elem's are allocated, but never free'ed
From: Baek Chang breakchange@gmail.com
--- 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 86f29e3..f8ceeeb 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; }
At Tue, 3 May 2011 10:52:34 -0700, baeksan@ccrma.stanford.edu wrote:
From: Baek Chang breakchange@gmail.com
Applied now. Thanks.
Takashi
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 86f29e3..f8ceeeb 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;
} *pos = '\0'; err = snd_ctl_ascii_elem_id_parse(id, cset);goto __fail;
@@ -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;
}
-- 1.6.0.4
participants (2)
-
baeksan@ccrma.stanford.edu
-
Takashi Iwai