diff options
author | Anatol Belski <ab@php.net> | 2013-07-10 13:32:13 +0200 |
---|---|---|
committer | Anatol Belski <ab@php.net> | 2013-07-10 13:32:13 +0200 |
commit | 638f1c3b799173f76a1ed2cc0806f82a3e3fe500 (patch) | |
tree | 715f552bbf0ff617a22c8112f50b7683f28bce72 /main | |
parent | 3fd987f4937bc81c248674807492778d98a75176 (diff) | |
parent | f5b9d87fb95a88333ef7d5bd1f3ee562c8730b6b (diff) | |
download | php-git-638f1c3b799173f76a1ed2cc0806f82a3e3fe500.tar.gz |
Merge branch 'PHP-5.5'
* PHP-5.5:
fix possible resource leak and make sure there's something to qsort()
Diffstat (limited to 'main')
-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 623aabff60..823b8859bf 100644 --- a/main/streams/streams.c +++ b/main/streams/streams.c @@ -2289,6 +2289,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; } @@ -2302,6 +2303,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; } @@ -2310,7 +2312,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; |