Req #62369 [Opn->Asn]: Segfault on json_encode(deeply_nested_array);

From: 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

« previous php.bugs (#172202) next »