diff options
author | Anatol Belski <ab@php.net> | 2013-07-10 13:00:47 +0200 |
---|---|---|
committer | Anatol Belski <ab@php.net> | 2013-07-10 13:00:47 +0200 |
commit | 29ac511b8afabaee27133bb3582142a49154eab5 (patch) | |
tree | 1c39ac050b80898401a7b732cbc9fb0f3a8ff30c | |
parent | c7ee677f2f330bbcc8721b6a84dd3a05dc0c5541 (diff) | |
download | php-git-29ac511b8afabaee27133bb3582142a49154eab5.tar.gz |
fix possible resource leak and make sure there's something to qsort()
-rw-r--r-- | main/streams/streams.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/main/streams/streams.c b/main/streams/streams.c index cb80e9a16b..a835c25d9d 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; |