[alsa-devel] [PATCH] snd_user_file: fix memory leak

Andreas Schwab schwab at suse.de
Mon Nov 3 17:22:28 CET 2014


Call wordfree if and only if wordfree returns zero or WRDE_NOSPACE

Signed-off-by: Andreas Schwab <schwab at suse.de>
---
 src/userfile.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/src/userfile.c b/src/userfile.c
index 3a73836..72779da 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;
 }
 
-- 
2.1.3

-- 
Andreas Schwab, SUSE Labs, schwab at suse.de
GPG Key fingerprint = 0196 BAD8 1CE9 1970 F4BE  1748 E4D4 88E3 0EEA B9D7
"And now for something completely different."


More information about the Alsa-devel mailing list