scottmac Thu Feb 12 00:36:23 2009 UTC Modified files: (Branch: PHP_5_2) /php-src/ext/json json.c /php-src/ext/json/tests 001.phpt bug42090.phpt Log: MFH Fix bug #45989 - json_decode() doesn't return NULL on certain invalid strings http://cvs.php.net/viewvc.cgi/php-src/ext/json/json.c?r1=1.9.2.25&r2=1.9.2.26&diff_format=u Index: php-src/ext/json/json.c diff -u php-src/ext/json/json.c:1.9.2.25 php-src/ext/json/json.c:1.9.2.26 --- php-src/ext/json/json.c:1.9.2.25 Wed Dec 31 11:17:38 2008 +++ php-src/ext/json/json.c Thu Feb 12 00:36:23 2009 @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: json.c,v 1.9.2.25 2008/12/31 11:17:38 sebastian Exp $ */ +/* $Id: json.c,v 1.9.2.26 2009/02/12 00:36:23 scottmac Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -479,13 +479,7 @@ RETURN_DOUBLE(d); } } - if (parameter_len > 1 && *parameter == '"' && parameter[parameter_len-1] == '"') { - RETURN_STRINGL(parameter+1, parameter_len-2, 1); - } else if (*parameter == '{' || *parameter == '[') { /* invalid JSON string */ RETURN_NULL(); - } else { - RETURN_STRINGL(parameter, parameter_len, 1); - } } } /* }}} */ http://cvs.php.net/viewvc.cgi/php-src/ext/json/tests/001.phpt?r1=1.1.2.6&r2=1.1.2.7&diff_format=u Index: php-src/ext/json/tests/001.phpt diff -u php-src/ext/json/tests/001.phpt:1.1.2.6 php-src/ext/json/tests/001.phpt:1.1.2.7 --- php-src/ext/json/tests/001.phpt:1.1.2.6 Fri Jan 23 20:23:25 2009 +++ php-src/ext/json/tests/001.phpt Thu Feb 12 00:36:23 2009 @@ -16,7 +16,6 @@ var_dump(json_decode("ÑÑÑÑиÑ")); var_dump(json_decode("blah")); var_dump(json_decode(NULL)); -var_dump(json_decode('[1}')); var_dump(json_decode('{ "test": { "foo": "bar" } }')); var_dump(json_decode('{ "test": { "foo": "" } }')); var_dump(json_decode('{ "": { "foo": "" } }')); @@ -32,12 +31,11 @@ NULL NULL NULL -string(1) "." -string(1) "." -string(3) "<?>" -string(1) ";" -string(12) "ÑÑÑÑиÑ" -string(4) "blah" +NULL +NULL +NULL +NULL +NULL NULL NULL object(stdClass)#%d (1) { http://cvs.php.net/viewvc.cgi/php-src/ext/json/tests/bug42090.phpt?r1=1.1.2.2&r2=1.1.2.3&diff_format=u Index: php-src/ext/json/tests/bug42090.phpt diff -u php-src/ext/json/tests/bug42090.phpt:1.1.2.2 php-src/ext/json/tests/bug42090.phpt:1.1.2.3 --- php-src/ext/json/tests/bug42090.phpt:1.1.2.2 Tue Jul 24 22:57:13 2007 +++ php-src/ext/json/tests/bug42090.phpt Thu Feb 12 00:36:23 2009 @@ -1,5 +1,5 @@ --TEST-- -Bug#42090 (json_decode causes segmentation fault) +Bug #42090 (json_decode causes segmentation fault) --SKIPIF-- <?php if (!extension_loaded("json")) print "skip"; ?> --FILE-- @@ -16,10 +16,9 @@ ?> --EXPECT-- string(0) "" -string(5) "".."." -string(1) """ -string(2) """" +NULL +NULL +NULL string(4) ""\""" string(1) """ string(2) """" -
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php