kalle                                    Mon, 13 Sep 2010 20:14:18 +0000

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

Log:
Fixed bug #52772 (var_dump() doesn't check for the existence of get_class_name 
before calling it)

Bug: http://bugs.php.net/52772 (Open) var_dump() doesn't check for the 
existence of get_class_name before calling it
      
Changed paths:
    U   php/php-src/branches/PHP_5_2/NEWS
    U   php/php-src/branches/PHP_5_2/ext/standard/var.c
    U   php/php-src/branches/PHP_5_3/NEWS
    U   php/php-src/branches/PHP_5_3/ext/standard/var.c
    U   php/php-src/trunk/ext/standard/var.c

Modified: php/php-src/branches/PHP_5_2/NEWS
===================================================================
--- php/php-src/branches/PHP_5_2/NEWS   2010-09-13 19:08:36 UTC (rev 303329)
+++ php/php-src/branches/PHP_5_2/NEWS   2010-09-13 20:14:18 UTC (rev 303330)
@@ -3,6 +3,8 @@
 ?? ??? 2010, PHP 5.2.15
 - Fixed possible crash in mssql_fetch_batch(). (Kalle)

+- Fixed bug #52772 (var_dump() doesn't check for the existence of
+  get_class_name before calling it). (Kalle, Gustavo)
 - Fixed bug #52546 (pdo_dblib segmentation fault when iterating MONEY values).
   (Felipe, Adam)
 - Fixed bug #52436 (Compile error if systems do not have stdint.h)

Modified: php/php-src/branches/PHP_5_2/ext/standard/var.c
===================================================================
--- php/php-src/branches/PHP_5_2/ext/standard/var.c     2010-09-13 19:08:36 UTC 
(rev 303329)
+++ php/php-src/branches/PHP_5_2/ext/standard/var.c     2010-09-13 20:14:18 UTC 
(rev 303330)
@@ -140,9 +140,13 @@
                        return;
                }

-               Z_OBJ_HANDLER(**struc, get_class_name)(*struc, &class_name, 
&class_name_len, 0 TSRMLS_CC);
-               php_printf("%sobject(%s)#%d (%d) {\n", COMMON, class_name, 
Z_OBJ_HANDLE_PP(struc), myht ? zend_hash_num_elements(myht) : 0);
-               efree(class_name);
+               if (Z_OBJ_HANDLER(**struc, get_class_name)) {
+                       Z_OBJ_HANDLER(**struc, get_class_name)(*struc, 
&class_name, &class_name_len, 0 TSRMLS_CC);
+                       php_printf("%sobject(%s)#%d (%d) {\n", COMMON, 
class_name, Z_OBJ_HANDLE_PP(struc), myht ? zend_hash_num_elements(myht) : 0);
+                       efree(class_name);
+               } else {
+                       php_printf("%sobject(unknown class)#%d (%d) {\n", 
COMMON, Z_OBJ_HANDLE_PP(struc), myht ? zend_hash_num_elements(myht) : 0);
+               }
                php_element_dump_func = php_object_property_dump;
 head_done:
                if (myht) {

Modified: php/php-src/branches/PHP_5_3/NEWS
===================================================================
--- php/php-src/branches/PHP_5_3/NEWS   2010-09-13 19:08:36 UTC (rev 303329)
+++ php/php-src/branches/PHP_5_3/NEWS   2010-09-13 20:14:18 UTC (rev 303330)
@@ -23,6 +23,8 @@

 - Fixed bug #52786 (PHP should reset section to [PHP] after ini sections).
   (Fedora at famillecollet dot com)
+- Fixed bug #52772 (var_dump() doesn't check for the existence of
+  get_class_name before calling it). (Kalle, Gustavo)
 - Fixed bug #52744 (cal_days_in_month incorrect for December 1 BCE).
   (gpap at internet dot gr, Adam)
 - Fixed bug #52725 (gcc builtin atomic functions were sometimes used when they

Modified: php/php-src/branches/PHP_5_3/ext/standard/var.c
===================================================================
--- php/php-src/branches/PHP_5_3/ext/standard/var.c     2010-09-13 19:08:36 UTC 
(rev 303329)
+++ php/php-src/branches/PHP_5_3/ext/standard/var.c     2010-09-13 20:14:18 UTC 
(rev 303330)
@@ -284,9 +284,13 @@
                        return;
                }
                ce = Z_OBJCE_PP(struc);
-               Z_OBJ_HANDLER_PP(struc, get_class_name)(*struc, &class_name, 
&class_name_len, 0 TSRMLS_CC);
-               php_printf("%sobject(%s)#%d (%d) refcount(%u){\n", COMMON, 
class_name, Z_OBJ_HANDLE_PP(struc), myht ? zend_hash_num_elements(myht) : 0, 
Z_REFCOUNT_PP(struc));
-               efree(class_name);
+               if (Z_OBJ_HANDLER_PP(struc, get_class_name)) {
+                       Z_OBJ_HANDLER_PP(struc, get_class_name)(*struc, 
&class_name, &class_name_len, 0 TSRMLS_CC);
+                       php_printf("%sobject(%s)#%d (%d) refcount(%u){\n", 
COMMON, class_name, Z_OBJ_HANDLE_PP(struc), myht ? zend_hash_num_elements(myht) 
: 0, Z_REFCOUNT_PP(struc));
+                       efree(class_name);
+               } else {
+                       php_printf("%sobject(unknown class)#%d (%d) 
refcount(%u){\n", COMMON, Z_OBJ_HANDLE_PP(struc), myht ? 
zend_hash_num_elements(myht) : 0, Z_REFCOUNT_PP(struc));
+               }
                zval_element_dump_func = zval_object_property_dump;
 head_done:
                if (myht) {

Modified: php/php-src/trunk/ext/standard/var.c
===================================================================
--- php/php-src/trunk/ext/standard/var.c        2010-09-13 19:08:36 UTC (rev 
303329)
+++ php/php-src/trunk/ext/standard/var.c        2010-09-13 20:14:18 UTC (rev 
303330)
@@ -133,9 +133,13 @@
                        return;
                }

-               Z_OBJ_HANDLER(**struc, get_class_name)(*struc, &class_name, 
&class_name_len, 0 TSRMLS_CC);
-               php_printf("%sobject(%s)#%d (%d) {\n", COMMON, class_name, 
Z_OBJ_HANDLE_PP(struc), myht ? zend_hash_num_elements(myht) : 0);
-               efree(class_name);
+               if (Z_OBJ_HANDLER(**struc, get_class_name) {
+                       Z_OBJ_HANDLER(**struc, get_class_name)(*struc, 
&class_name, &class_name_len, 0 TSRMLS_CC);
+                       php_printf("%sobject(%s)#%d (%d) {\n", COMMON, 
class_name, Z_OBJ_HANDLE_PP(struc), myht ? zend_hash_num_elements(myht) : 0);
+                       efree(class_name);
+               } else {
+                       php_printf("%sobject(unknown class)#%d (%d) {\n", 
COMMON, Z_OBJ_HANDLE_PP(struc), myht ? zend_hash_num_elements(myht) : 0);
+               }
                php_element_dump_func = php_object_property_dump;
 head_done:
                if (myht) {

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

Reply via email to