From ec95243dadab66e61d1b424bac2d08c34bdabc7e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mattias=20Walstr=C3=B6m?= Date: Fri, 17 May 2013 15:56:17 +0200 Subject: [PATCH] libite: Fix memory leak in dir() MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Mattias Walström Signed-off-by: Joachim Nilsson --- libite/dir.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/libite/dir.c b/libite/dir.c index 3595d4d9..fb64b4a0 100644 --- a/libite/dir.c +++ b/libite/dir.c @@ -94,7 +94,7 @@ int dir(const char *dir, const char *type, int (*filter) (const char *file), cha n = scandir(dir, &namelist, matcher, alphasort); if (n < 0) { perror("scandir"); - } else { + } else if (n > 0) { files = (char **)malloc(n * sizeof(char *)); for (i = 0; i < n; i++) { if (files) { @@ -109,11 +109,12 @@ int dir(const char *dir, const char *type, int (*filter) (const char *file), cha } free(namelist[i]); } - free(namelist); + if (num) + *list = files; } - if (num) - *list = files; + if (namelist) + free(namelist); return num; }