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>
This commit is contained in:
Andreas Schwab 2014-11-03 17:22:28 +01:00 committed by Takashi Iwai
parent ebd6afc915
commit c7bfcbb255

View 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;
}