summaryrefslogtreecommitdiff
path: root/main
diff options
context:
space:
mode:
authorAnatol Belski <ab@php.net>2013-07-10 13:32:13 +0200
committerAnatol Belski <ab@php.net>2013-07-10 13:32:13 +0200
commit638f1c3b799173f76a1ed2cc0806f82a3e3fe500 (patch)
tree715f552bbf0ff617a22c8112f50b7683f28bce72 /main
parent3fd987f4937bc81c248674807492778d98a75176 (diff)
parentf5b9d87fb95a88333ef7d5bd1f3ee562c8730b6b (diff)
downloadphp-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.c4
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;