diff options
author | Andreas Schwab <schwab@suse.de> | 2014-11-03 17:22:28 +0100 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2014-11-03 17:26:00 +0100 |
commit | c7bfcbb25548db39299488e285b510a174231076 (patch) | |
tree | 34f02c34811a5b8f9c7f648490f55760853e5f08 /src/userfile.c | |
parent | ebd6afc9158c0afd7263a0ffa5474cf9e5f20c66 (diff) | |
download | alsa-lib-c7bfcbb25548db39299488e285b510a174231076.tar.gz |
snd_user_file: fix memory leak
Call wordfree if and only if wordfree returns zero or WRDE_NOSPACE
Signed-off-by: Andreas Schwab <schwab@suse.de>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'src/userfile.c')
-rw-r--r-- | src/userfile.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/src/userfile.c b/src/userfile.c index 3a738366..72779da4 100644 --- a/src/userfile.c +++ b/src/userfile.c @@ -44,19 +44,20 @@ int snd_user_file(const char *file, char **result) err = wordexp(file, &we, WRDE_NOCMD); switch (err) { case WRDE_NOSPACE: + wordfree(&we); return -ENOMEM; case 0: if (we.we_wordc == 1) break; + wordfree(&we); /* fall thru */ default: - wordfree(&we); return -EINVAL; } *result = strdup(we.we_wordv[0]); + wordfree(&we); if (*result == NULL) return -ENOMEM; - wordfree(&we); return 0; } |