From c7bfcbb25548db39299488e285b510a174231076 Mon Sep 17 00:00:00 2001 From: Andreas Schwab Date: Mon, 3 Nov 2014 17:22:28 +0100 Subject: snd_user_file: fix memory leak Call wordfree if and only if wordfree returns zero or WRDE_NOSPACE Signed-off-by: Andreas Schwab Signed-off-by: Takashi Iwai --- src/userfile.c | 5 +++-- 1 file 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; } -- cgit v1.2.1