Commit:    29ac511b8afabaee27133bb3582142a49154eab5
Author:    Anatol Belski <a...@php.net>         Wed, 10 Jul 2013 13:00:47 +0200
Parents:   c7ee677f2f330bbcc8721b6a84dd3a05dc0c5541
Branches:  PHP-5.4 PHP-5.5 master

Link:       
http://git.php.net/?p=php-src.git;a=commitdiff;h=29ac511b8afabaee27133bb3582142a49154eab5

Log:
fix possible resource leak and make sure there's something to qsort()

Changed paths:
  M  main/streams/streams.c


Diff:
diff --git a/main/streams/streams.c b/main/streams/streams.c
index cb80e9a..a835c25 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;


--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to