summaryrefslogtreecommitdiff
path: root/src/userfile.c
diff options
context:
space:
mode:
authorAndreas Schwab <schwab@suse.de>2014-11-03 17:22:28 +0100
committerTakashi Iwai <tiwai@suse.de>2014-11-03 17:26:00 +0100
commitc7bfcbb25548db39299488e285b510a174231076 (patch)
tree34f02c34811a5b8f9c7f648490f55760853e5f08 /src/userfile.c
parentebd6afc9158c0afd7263a0ffa5474cf9e5f20c66 (diff)
downloadalsa-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.c5
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;
}