From 29ac511b8afabaee27133bb3582142a49154eab5 Mon Sep 17 00:00:00 2001 From: Anatol Belski Date: Wed, 10 Jul 2013 13:00:47 +0200 Subject: [PATCH] fix possible resource leak and make sure there's something to qsort() --- main/streams/streams.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/main/streams/streams.c b/main/streams/streams.c index cb80e9a16b5..a835c25d9dd 100644 --- a/main/streams/streams.c +++ b/main/streams/streams.c @@ -2358,6 +2358,7 @@ PHPAPI int _php_stream_scandir(char *dirname, char **namelist[], int flags, php_ } else { if(vector_size*2 < vector_size) { /* overflow */ + php_stream_closedir(stream); efree(vector); return FAILURE; } @@ -2371,6 +2372,7 @@ PHPAPI int _php_stream_scandir(char *dirname, char **namelist[], int flags, php_ nfiles++; if(vector_size < 10 || nfiles == 0) { /* overflow */ + php_stream_closedir(stream); efree(vector); return FAILURE; } @@ -2379,7 +2381,7 @@ PHPAPI int _php_stream_scandir(char *dirname, char **namelist[], int flags, php_ *namelist = vector; - if (compare) { + if (nfiles > 0 && compare) { qsort(*namelist, nfiles, sizeof(char *), (int(*)(const void *, const void *))compare); } return nfiles;