iliaa                                    Sun, 02 May 2010 19:34:21 +0000

Revision: http://svn.php.net/viewvc?view=revision&revision=298881

Log:
- Fixed a possible stack exaustion inside fnmatch(). Reporeted by Stefan Esser

Changed paths:
    U   php/php-src/branches/PHP_5_2/NEWS
    U   php/php-src/branches/PHP_5_2/ext/standard/file.c
    U   php/php-src/branches/PHP_5_3/NEWS
    U   php/php-src/branches/PHP_5_3/ext/standard/file.c
    U   php/php-src/trunk/ext/standard/file.c

Modified: php/php-src/branches/PHP_5_2/NEWS
===================================================================
--- php/php-src/branches/PHP_5_2/NEWS   2010-05-02 18:47:27 UTC (rev 298880)
+++ php/php-src/branches/PHP_5_2/NEWS   2010-05-02 19:34:21 UTC (rev 298881)
@@ -8,6 +8,8 @@

 - Updated timezone database to version 2010.5. (Derick)

+- Fixed a possible stack exaustion inside fnmatch(). Reporeted by Stefan
+  Esser (Ilia)
 - Reset error state in PDO::beginTransaction() reset error state. (Ilia)
 - Fixed a NULL pointer dereference when processing invalid XML-RPC
   requests (Fixes CVE-2010-0397, bug #51288). (Raphael Geissert)

Modified: php/php-src/branches/PHP_5_2/ext/standard/file.c
===================================================================
--- php/php-src/branches/PHP_5_2/ext/standard/file.c    2010-05-02 18:47:27 UTC 
(rev 298880)
+++ php/php-src/branches/PHP_5_2/ext/standard/file.c    2010-05-02 19:34:21 UTC 
(rev 298881)
@@ -2551,6 +2551,10 @@
                php_error_docref(NULL TSRMLS_CC, E_WARNING, "Filename exceeds 
the maximum allowed length of %d characters", MAXPATHLEN);
                RETURN_FALSE;
        }
+       if (pattern_len >= MAXPATHLEN) {
+               php_error_docref(NULL TSRMLS_CC, E_WARNING, "Pattern exceeds 
the maximum allowed length of %d characters", MAXPATHLEN);
+               RETURN_FALSE;
+       }

        RETURN_BOOL( ! fnmatch( pattern, filename, flags ));
 }

Modified: php/php-src/branches/PHP_5_3/NEWS
===================================================================
--- php/php-src/branches/PHP_5_3/NEWS   2010-05-02 18:47:27 UTC (rev 298880)
+++ php/php-src/branches/PHP_5_3/NEWS   2010-05-02 19:34:21 UTC (rev 298881)
@@ -23,6 +23,8 @@
 - Fixed very rare memory leak in mysqlnd, when binding thousands of columns.
   (Andrey)

+- Fixed a possible stack exaustion inside fnmatch(). Reporeted by Stefan
+  Esser (Ilia)
 - Fixed a possible dechunking filter buffer overflow. Reported by Stefan Esser.
   (Pierre)
 - Fixed a possible arbitrary memory access inside sqlite extension. Reported

Modified: php/php-src/branches/PHP_5_3/ext/standard/file.c
===================================================================
--- php/php-src/branches/PHP_5_3/ext/standard/file.c    2010-05-02 18:47:27 UTC 
(rev 298880)
+++ php/php-src/branches/PHP_5_3/ext/standard/file.c    2010-05-02 19:34:21 UTC 
(rev 298881)
@@ -136,27 +136,13 @@

 /* {{{ ZTS-stuff / Globals / Prototypes */

-/* sharing globals is *evil* */
-static int le_stream_context = FAILURE;

-PHPAPI int php_le_stream_context(void)
-{
-       return le_stream_context;
-}
 /* }}} */

 /* {{{ Module-Stuff
 */
-static ZEND_RSRC_DTOR_FUNC(file_context_dtor)
-{
-       php_stream_context *context = (php_stream_context*)rsrc->ptr;
-       if (context->options) {
-               zval_ptr_dtor(&context->options);
-               context->options = NULL;
-       }
-       php_stream_context_free(context);
-}

+
 static void file_globals_ctor(php_file_globals *file_globals_p TSRMLS_DC)
 {
        FG(pclose_ret) = 0;
@@ -176,7 +162,6 @@

 PHP_MINIT_FUNCTION(file)
 {
-       le_stream_context = 
zend_register_list_destructors_ex(file_context_dtor, NULL, "stream-context", 
module_number);

 #ifdef ZTS
        ts_allocate_id(&file_globals_id, sizeof(php_file_globals), 
(ts_allocate_ctor) file_globals_ctor, (ts_allocate_dtor) file_globals_dtor);
@@ -2521,6 +2506,10 @@
                php_error_docref(NULL TSRMLS_CC, E_WARNING, "Filename exceeds 
the maximum allowed length of %d characters", MAXPATHLEN);
                RETURN_FALSE;
        }
+       if (pattern_len >= MAXPATHLEN) {
+               php_error_docref(NULL TSRMLS_CC, E_WARNING, "Pattern exceeds 
the maximum allowed length of %d characters", MAXPATHLEN);
+               RETURN_FALSE;
+       }

        RETURN_BOOL( ! fnmatch( pattern, filename, flags ));
 }

Modified: php/php-src/trunk/ext/standard/file.c
===================================================================
--- php/php-src/trunk/ext/standard/file.c       2010-05-02 18:47:27 UTC (rev 
298880)
+++ php/php-src/trunk/ext/standard/file.c       2010-05-02 19:34:21 UTC (rev 
298881)
@@ -2469,6 +2469,10 @@
                php_error_docref(NULL TSRMLS_CC, E_WARNING, "Filename exceeds 
the maximum allowed length of %d characters", MAXPATHLEN);
                RETURN_FALSE;
        }
+       if (pattern_len >= MAXPATHLEN) {
+               php_error_docref(NULL TSRMLS_CC, E_WARNING, "Pattern exceeds 
the maximum allowed length of %d characters", MAXPATHLEN);
+               RETURN_FALSE;
+       }

        RETURN_BOOL( ! fnmatch( pattern, filename, flags ));
 }

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

Reply via email to