tony2001 Thu Mar 8 00:44:23 2007 UTC Added files: (Branch: PHP_5_2) /php-src/ext/standard/tests/general_functions bug40752.phpt
Modified files: /php-src NEWS /php-src/ext/standard basic_functions.c Log: MFH: fix #40752 (parse_ini_file() segfaults when a scalar setting is redeclared as an array) http://cvs.php.net/viewvc.cgi/php-src/NEWS?r1=1.2027.2.547.2.577&r2=1.2027.2.547.2.578&diff_format=u Index: php-src/NEWS diff -u php-src/NEWS:1.2027.2.547.2.577 php-src/NEWS:1.2027.2.547.2.578 --- php-src/NEWS:1.2027.2.547.2.577 Wed Mar 7 09:03:07 2007 +++ php-src/NEWS Thu Mar 8 00:44:23 2007 @@ -15,6 +15,8 @@ - Added --ri switch to CLI which allows to check extension information. (Marcus) - Added tidyNode::getParent() method (John, Nuno) - Fixed zend_llist_remove_tail (Michael Wallner, Dmitry) +- Fixed bug #40752 (parse_ini_file() segfaults when a scalar setting is + redeclared as an array). (Tony) - Fixed bug #40727 (segfault in PDO when failed to bind parameters). (Tony) - Fixed bug #40709 (array_reduce() behaves strange with one item stored arrays). (Ilia) http://cvs.php.net/viewvc.cgi/php-src/ext/standard/basic_functions.c?r1=1.725.2.31.2.43&r2=1.725.2.31.2.44&diff_format=u Index: php-src/ext/standard/basic_functions.c diff -u php-src/ext/standard/basic_functions.c:1.725.2.31.2.43 php-src/ext/standard/basic_functions.c:1.725.2.31.2.44 --- php-src/ext/standard/basic_functions.c:1.725.2.31.2.43 Thu Feb 22 08:23:17 2007 +++ php-src/ext/standard/basic_functions.c Thu Mar 8 00:44:23 2007 @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: basic_functions.c,v 1.725.2.31.2.43 2007/02/22 08:23:17 dmitry Exp $ */ +/* $Id: basic_functions.c,v 1.725.2.31.2.44 2007/03/08 00:44:23 tony2001 Exp $ */ #include "php.h" #include "php_streams.h" @@ -6130,6 +6130,12 @@ } } + if (Z_TYPE_P(hash) != IS_ARRAY) { + zval_dtor(hash); + INIT_PZVAL(hash); + array_init(hash); + } + ALLOC_ZVAL(element); *element = *arg2; zval_copy_ctor(element); http://cvs.php.net/viewvc.cgi/php-src/ext/standard/tests/general_functions/bug40752.phpt?view=markup&rev=1.1 Index: php-src/ext/standard/tests/general_functions/bug40752.phpt +++ php-src/ext/standard/tests/general_functions/bug40752.phpt --TEST-- Bug #40752 (parse_ini_file() segfaults when a scalar setting is redeclared as an array) --FILE-- <?php $file = dirname(__FILE__)."/bug40752.ini"; file_put_contents($file, ' foo = 1; foo[] = 1; '); var_dump(parse_ini_file($file)); file_put_contents($file, ' foo[] = 1; foo = 1; '); var_dump(parse_ini_file($file)); unlink($file); echo "Done\n"; ?> --EXPECTF-- array(1) { ["foo"]=> array(1) { [0]=> string(1) "1" } } array(1) { ["foo"]=> string(1) "1" } Done --UEXPECTF-- array(1) { [u"foo"]=> array(1) { [0]=> unicode(1) "1" } } array(1) { [u"foo"]=> unicode(1) "1" } Done -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php