Bug #70947 [Opn->Csd]: INI parser segfault with INI_SCANNER_TYPED
| From: | laruence@php.net | Date: | Fri, 20 Nov 2015 14:38:06 +0000 |
| Subject: | Bug #70947 [Opn->Csd]: INI parser segfault with INI_SCANNER_TYPED | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-197352@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=70947&edit=1
ID: 70947
Updated by: laruence@php.net
Reported by: samuli dot kauranne at naturalsciences dot be
Summary: INI parser segfault with INI_SCANNER_TYPED
-Status: Open
+Status: Closed
Type: Bug
Package: Filesystem function related
Operating System: *
PHP Version: 7.0.0RC7
Block user comment: N
Private report: N
New Comment:
Automatic comment on behalf of laruence@gmail.com
Revision: http://git.php.net/?p=php-src.git;a=commit;h=519f9bc67520f2dfd43e4d829143721d1334ff59
Log: Fixed bug #70947 (INI parser segfault with INI_SCANNER_TYPED)
Previous Comments:
------------------------------------------------------------------------
[2015-11-20 10:48:27] samuli dot kauranne at naturalsciences dot be
Description:
------------
This report should be viewed as continuation of Bug #70157, which seems to be solved only in a
specific case.
Observed with: PHP 7.0.0RC7 and PHP 5.6.16RC1
Operating systems: Any (tests run in Ubuntu 15.10, Ubuntu 15.04)
parse_ini_string() and parse_ini_file() segfault when the new INI_SCANNER_TYPED scanner encounters
an unquoted value of format 'STRING INT' or 'STRING FLOAT' in the ini. Inputs in
formats 'STRING INT STRING', 'STRING STRING INT' also trigger the bug.
I was first surprised to see that input in form 'INT STRING' does NOT trigger the bug, but
this seems to be because the solution to Bug #70157 addresses this specific case only.
Which integer or floating point number is used does not seem to affect the result (can be small or
large). However, floating point numbers in format '1e-2' or '2.3E4' DO NOT
trigger the bug, nor do hexadecimal values given in format '0x1234'.
Whether the 'process_sections' argument is TRUE or FALSE does not seem to affect the bug.
The bug does not manifest itself with INI_SCANNER_RAW or INI_SCANNER_NORMAL
Test script:
---------------
$o = parse_ini_string('foo = bar 123', FALSE, INI_SCANNER_TYPED);
Expected result:
----------------
$o array(1) {
["foo"]=>
string(7) "bar 123"
}
Actual result:
--------------
#0 zend_ini_add_string (result=result@entry=0x7ffd59704310, op1=op1@entry=0x7ffd59704500,
op2=0x7ffd59704510) at /root/php-7.0.0RC7/Zend/zend_ini_parser.c:185
#1 0x0000000000799bcc in ini_parse () at /root/php-7.0.0RC7/Zend/zend_ini_parser.c:1739
#2 0x000000000079a2e7 in zend_parse_ini_string (str=str@entry=0x7f1e5aa6b180 "foo=bar
24", unbuffered_errors=unbuffered_errors@entry=0 '\000', scanner_mode=<optimized
out>,
ini_parser_cb=ini_parser_cb@entry=0x6e70e0 <php_simple_ini_parser_cb>,
arg=arg@entry=0x7f1e5aa120a0) at /root/php-7.0.0RC7/Zend/zend_ini_parser.c:317
#3 0x00000000006e749b in zif_parse_ini_string (execute_data=<optimized out>,
return_value=0x7f1e5aa120a0) at /root/php-7.0.0RC7/ext/standard/basic_functions.c:5956
#4 0x000000000081310d in ZEND_DO_ICALL_SPEC_HANDLER () at
/root/php-7.0.0RC7/Zend/zend_vm_execute.h:586
#5 0x000000000080456b in execute_ex (ex=<optimized out>) at
/root/php-7.0.0RC7/Zend/zend_vm_execute.h:414
#6 0x0000000000857e67 in zend_execute (op_array=0x7f1e5aa7b000, op_array@entry=0x7f1e5aa7b160,
return_value=return_value@entry=0x7f1e5aa12030) at /root/php-7.0.0RC7/Zend/zend_vm_execute.h:458
#7 0x00000000007c5993 in zend_execute_scripts (type=type@entry=8, retval=0x7f1e5aa12030,
retval@entry=0x0, file_count=file_count@entry=3) at /root/php-7.0.0RC7/Zend/zend.c:1428
#8 0x0000000000766bd0 in php_execute_script (primary_file=0x7ffd597078c0) at
/root/php-7.0.0RC7/main/main.c:2471
#9 0x0000000000859b3b in do_cli (argc=1500529424, argv=0x7ffd59704500) at
/root/php-7.0.0RC7/sapi/cli/php_cli.c:974
#10 0x000000000043dc50 in main (argc=1500529424, argv=0x7ffd59704500) at
/root/php-7.0.0RC7/sapi/cli/php_cli.c:1345
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=70947&edit=1