mirror of
https://github.com/php/php-src.git
synced 2025-08-16 14:08:47 +02:00
Fix bug #68567 (JSON_PARTIAL_OUTPUT_ON_ERROR can result in JSON with null key)
This commit is contained in:
parent
46d87c1f10
commit
7c556c44a1
3 changed files with 25 additions and 2 deletions
4
NEWS
4
NEWS
|
@ -22,6 +22,10 @@ PHP NEWS
|
||||||
- Fileinfo:
|
- Fileinfo:
|
||||||
. Upgrade bundled libmagic to 5.31. (Anatol)
|
. Upgrade bundled libmagic to 5.31. (Anatol)
|
||||||
|
|
||||||
|
- JSON:
|
||||||
|
. Fixed bug #68567 (JSON_PARTIAL_OUTPUT_ON_ERROR can result in JSON with null
|
||||||
|
key). (Jakub Zelenka)
|
||||||
|
|
||||||
- Opcache:
|
- Opcache:
|
||||||
. Fixed bug #75370 (Webserver hangs on valid PHP text). (Laruence)
|
. Fixed bug #75370 (Webserver hangs on valid PHP text). (Laruence)
|
||||||
. Fixed bug #75357 (segfault loading WordPress wp-admin). (Laruence)
|
. Fixed bug #75357 (segfault loading WordPress wp-admin). (Laruence)
|
||||||
|
|
|
@ -189,8 +189,13 @@ static int php_json_encode_array(smart_str *buf, zval *val, int options, php_jso
|
||||||
php_json_pretty_print_char(buf, options, '\n');
|
php_json_pretty_print_char(buf, options, '\n');
|
||||||
php_json_pretty_print_indent(buf, options, encoder);
|
php_json_pretty_print_indent(buf, options, encoder);
|
||||||
|
|
||||||
php_json_escape_string(buf, ZSTR_VAL(key), ZSTR_LEN(key),
|
if (php_json_escape_string(buf, ZSTR_VAL(key), ZSTR_LEN(key),
|
||||||
options & ~PHP_JSON_NUMERIC_CHECK, encoder);
|
options & ~PHP_JSON_NUMERIC_CHECK, encoder) == FAILURE &&
|
||||||
|
(options & PHP_JSON_PARTIAL_OUTPUT_ON_ERROR) &&
|
||||||
|
buf->s) {
|
||||||
|
ZSTR_LEN(buf->s) -= 4;
|
||||||
|
smart_str_appendl(buf, "\"\"", 2);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
if (need_comma) {
|
if (need_comma) {
|
||||||
smart_str_appendc(buf, ',');
|
smart_str_appendc(buf, ',');
|
||||||
|
|
14
ext/json/tests/bug68567.phpt
Normal file
14
ext/json/tests/bug68567.phpt
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
--TEST--
|
||||||
|
Bug #68567 JSON_PARTIAL_OUTPUT_ON_ERROR can result in JSON with null key
|
||||||
|
--SKIPIF--
|
||||||
|
<?php if (!extension_loaded("json")) print "skip"; ?>
|
||||||
|
--FILE--
|
||||||
|
<?php
|
||||||
|
|
||||||
|
var_dump(json_encode(array("\x80" => 1), JSON_PARTIAL_OUTPUT_ON_ERROR));
|
||||||
|
|
||||||
|
?>
|
||||||
|
===DONE===
|
||||||
|
--EXPECTF--
|
||||||
|
string(6) "{"":1}"
|
||||||
|
===DONE===
|
Loading…
Add table
Add a link
Reference in a new issue