Edit report at https://bugs.php.net/bug.php?id=62369&edit=1

 ID:                 62369
 Updated by:         f...@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] larue...@php.net

change to FR: add a max_depth limitation to json_encode

------------------------------------------------------------------------
[2012-06-21 08:01:41] larue...@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

Reply via email to