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); err = wordexp(file, &we, WRDE_NOCMD);
switch (err) { switch (err) {
case WRDE_NOSPACE: case WRDE_NOSPACE:
wordfree(&we);
return -ENOMEM; return -ENOMEM;
case 0: case 0:
if (we.we_wordc == 1) if (we.we_wordc == 1)
break; break;
wordfree(&we);
/* fall thru */ /* fall thru */
default: default:
wordfree(&we);
return -EINVAL; return -EINVAL;
} }
*result = strdup(we.we_wordv[0]); *result = strdup(we.we_wordv[0]);
wordfree(&we);
if (*result == NULL) if (*result == NULL)
return -ENOMEM; return -ENOMEM;
wordfree(&we);
return 0; return 0;
} }