tony2001 Thu Mar 8 00:43:06 2007 UTC
Added files:
/php-src/ext/standard/tests/general_functions bug40752.phpt
Modified files:
/php-src/ext/standard basic_functions.c
Log:
fix #40752 (parse_ini_file() segfaults when a scalar setting is redeclared as
an array)
http://cvs.php.net/viewvc.cgi/php-src/ext/standard/basic_functions.c?r1=1.851&r2=1.852&diff_format=u
Index: php-src/ext/standard/basic_functions.c
diff -u php-src/ext/standard/basic_functions.c:1.851
php-src/ext/standard/basic_functions.c:1.852
--- php-src/ext/standard/basic_functions.c:1.851 Tue Mar 6 19:59:13 2007
+++ php-src/ext/standard/basic_functions.c Thu Mar 8 00:43:05 2007
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: basic_functions.c,v 1.851 2007/03/06 19:59:13 tony2001 Exp $ */
+/* $Id: basic_functions.c,v 1.852 2007/03/08 00:43:05 tony2001 Exp $ */
#include "php.h"
#include "php_streams.h"
@@ -6211,6 +6211,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