]> git.alsa-project.org Git - alsa-lib.git/commitdiff
snd_user_file: fix memory leak
authorAndreas Schwab <schwab@suse.de>
Mon, 3 Nov 2014 16:22:28 +0000 (17:22 +0100)
committerTakashi Iwai <tiwai@suse.de>
Mon, 3 Nov 2014 16:26:00 +0000 (17:26 +0100)
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>
src/userfile.c

index 3a738366f1ea7bbe570b442b77fb9377168ba0c1..72779da4ebafee554a1af1bbf34a03ac7bb66863 100644 (file)
@@ -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;
 }