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

Reply via email to