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