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