Req #62369 [Opn->Asn]: Segfault on json_encode(deeply_nested_array);
| From: | fa@php.net | Date: | Tue, 24 Jul 2012 11:02:14 +0000 |
| Subject: | Req #62369 [Opn->Asn]: Segfault on json_encode(deeply_nested_array); | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-172202@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=62369&edit=1
ID: 62369
Updated by: fa@php.net
Reported by: arjen at react dot com
Summary: Segfault on json_encode(deeply_nested_array);
-Status: Open
+Status: Assigned
Type: Feature/Change Request
Package: JSON related
Operating System: CENTOS
PHP Version: 5.4.4
-Assigned To:
+Assigned To: fa
Block user comment: N
Private report: N
Previous Comments:
------------------------------------------------------------------------
[2012-06-25 06:10:51] laruence@php.net
change to FR: add a max_depth limitation to json_encode
------------------------------------------------------------------------
[2012-06-21 08:01:41] laruence@php.net
stack overflow... it's kind of no bug... anyway maybe we can introduce a new
parameter
max_depth to json_encode too.
------------------------------------------------------------------------
[2012-06-20 09:10:38] arjen at react dot com
Description:
------------
Trying to json_encode a 50.000 levels deep nested array causes a segfault.
Segfault occurs in PHP versions 5.2.0 - 5.2.17, 5.3.0 - 5.3.14, 5.4.0 - 5.4.4,
see http://3v4l.org/uZOgV
Found while trying to construct a testcase for json_last_error() ==
JSON_ERROR_DEPTH
Test script:
---------------
<?php
$array = array();
for ($i = 0; $i < 50000; $i++)
$array = array($array);
json_encode($array);
Expected result:
----------------
Correct result or 0 with json_last_error() == JSON_ERROR_DEPTH
Actual result:
--------------
#0 0x00007fffed1e2d59 in json_determine_array_type (buf=0x7fffffffba50,
val=0xfa5ea8, options=0) at /home/edwin/rpm/BUILD/php-5.3.13/ext/json/json.c:139
#1 json_encode_array (buf=0x7fffffffba50, val=0xfa5ea8, options=0) at
/home/edwin/rpm/BUILD/php-5.3.13/ext/json/json.c:176
#2 php_json_encode (buf=0x7fffffffba50, val=0xfa5ea8, options=0) at
/home/edwin/rpm/BUILD/php-5.3.13/ext/json/json.c:476
#3 0x00007fffed1e32df in json_encode_array (buf=<value optimized out>, val=
<value optimized out>, options=<value optimized out>) at
/home/edwin/rpm/BUILD/php-5.3.13/ext/json/json.c:258
#4 php_json_encode (buf=<value optimized out>, val=<value optimized out>,
options=<value optimized out>) at /home/edwin/rpm/BUILD/php-
5.3.13/ext/json/json.c:476
#5 0x00007fffed1e32df in json_encode_array (buf=<value optimized out>, val=
<value optimized out>, options=<value optimized out>) at
/home/edwin/rpm/BUILD/php-5.3.13/ext/json/json.c:258
#6 php_json_encode (buf=<value optimized out>, val=<value optimized out>,
options=<value optimized out>) at /home/edwin/rpm/BUILD/php-
5.3.13/ext/json/json.c:476
#7 0x00007fffed1e32df in json_encode_array (buf=<value optimized out>, val=
<value optimized out>, options=<value optimized out>) at
/home/edwin/rpm/BUILD/php-5.3.13/ext/json/json.c:258
#8 php_json_encode (buf=<value optimized out>, val=<value optimized out>,
options=<value optimized out>) at /home/edwin/rpm/BUILD/php-
5.3.13/ext/json/json.c:476
#9 0x00007fffed1e32df in json_encode_array (buf=<value optimized out>, val=
<value optimized out>, options=<value optimized out>) at
/home/edwin/rpm/BUILD/php-5.3.13/ext/json/json.c:258
#10 php_json_encode (buf=<value optimized out>, val=<value optimized out>,
options=<value optimized out>) at /home/edwin/rpm/BUILD/php-
5.3.13/ext/json/json.c:476
[line 9/10 repeated]
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=62369&edit=1