dmitry                                   Mon, 17 May 2010 07:50:33 +0000

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

Log:
Fixed a possible crash because of recursive GC invocation

Changed paths:
    U   php/php-src/branches/PHP_5_3/NEWS
    U   php/php-src/branches/PHP_5_3/ext/simplexml/simplexml.c
    U   php/php-src/trunk/ext/simplexml/simplexml.c

Modified: php/php-src/branches/PHP_5_3/NEWS
===================================================================
--- php/php-src/branches/PHP_5_3/NEWS   2010-05-17 07:44:30 UTC (rev 299423)
+++ php/php-src/branches/PHP_5_3/NEWS   2010-05-17 07:50:33 UTC (rev 299424)
@@ -23,6 +23,7 @@
 - Fixed very rare memory leak in mysqlnd, when binding thousands of columns.
   (Andrey)

+- Fixed a possible crash because of recursive GC invocation. (Dmitry)
 - Fixed a possible resource destruction issues in shm_put_var()
   Reported by Stefan Esser (Dmitry)
 - Fixed a possible information leak because of interruption of XOR operator.

Modified: php/php-src/branches/PHP_5_3/ext/simplexml/simplexml.c
===================================================================
--- php/php-src/branches/PHP_5_3/ext/simplexml/simplexml.c      2010-05-17 
07:44:30 UTC (rev 299423)
+++ php/php-src/branches/PHP_5_3/ext/simplexml/simplexml.c      2010-05-17 
07:50:33 UTC (rev 299424)
@@ -1083,6 +1083,9 @@
                zend_hash_clean(sxe->properties);
                rv = sxe->properties;
        } else {
+               if (GC_G(gc_active)) {
+                       return NULL;
+               }
                ALLOC_HASHTABLE(rv);
                zend_hash_init(rv, 0, NULL, ZVAL_PTR_DTOR, 0);
                sxe->properties = rv;

Modified: php/php-src/trunk/ext/simplexml/simplexml.c
===================================================================
--- php/php-src/trunk/ext/simplexml/simplexml.c 2010-05-17 07:44:30 UTC (rev 
299423)
+++ php/php-src/trunk/ext/simplexml/simplexml.c 2010-05-17 07:50:33 UTC (rev 
299424)
@@ -1083,6 +1083,9 @@
                zend_hash_clean(sxe->properties);
                rv = sxe->properties;
        } else {
+               if (GC_G(gc_active)) {
+                       return NULL;
+               }
                ALLOC_HASHTABLE(rv);
                zend_hash_init(rv, 0, NULL, ZVAL_PTR_DTOR, 0);
                sxe->properties = rv;

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

Reply via email to