mirror of
https://github.com/MariaDB/server.git
synced 2025-06-06 05:21:19 +03:00
MDEV-19628 JSON with starting double quotes key is not valid.
First character of the key name is just skipped, so the escapement wasn't handled properly.
This commit is contained in:
parent
2911a9a693
commit
6ac2a35553
@ -951,5 +951,17 @@ SELECT json_valid('{"test": "\\ud83d\\ude0b"}');
|
|||||||
json_valid('{"test": "\\ud83d\\ude0b"}')
|
json_valid('{"test": "\\ud83d\\ude0b"}')
|
||||||
1
|
1
|
||||||
#
|
#
|
||||||
|
# MDEV-19670 json escaped unicode parse error
|
||||||
|
#
|
||||||
|
SELECT JSON_VALID('{"admin\\"": null}'), '{"admin\\"": null}'
|
||||||
|
UNION
|
||||||
|
SELECT JSON_VALID('{"\\"admin": null}'), '{"\\"admin": null}'
|
||||||
|
UNION
|
||||||
|
SELECT JSON_VALID('{"\\"": null}'), '{"\\"": null}';
|
||||||
|
JSON_VALID('{"admin\\"": null}') {"admin\"": null}
|
||||||
|
1 {"admin\"": null}
|
||||||
|
1 {"\"admin": null}
|
||||||
|
1 {"\"": null}
|
||||||
|
#
|
||||||
# End of 10.3 tests
|
# End of 10.3 tests
|
||||||
#
|
#
|
||||||
|
@ -568,6 +568,16 @@ SELECT
|
|||||||
SELECT json_valid('{"value":"\\ud83d\\ude0a"}');
|
SELECT json_valid('{"value":"\\ud83d\\ude0a"}');
|
||||||
SELECT json_valid('{"test": "\\ud83d\\ude0b"}');
|
SELECT json_valid('{"test": "\\ud83d\\ude0b"}');
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # MDEV-19670 json escaped unicode parse error
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
SELECT JSON_VALID('{"admin\\"": null}'), '{"admin\\"": null}'
|
||||||
|
UNION
|
||||||
|
SELECT JSON_VALID('{"\\"admin": null}'), '{"\\"admin": null}'
|
||||||
|
UNION
|
||||||
|
SELECT JSON_VALID('{"\\"": null}'), '{"\\"": null}';
|
||||||
|
|
||||||
--echo #
|
--echo #
|
||||||
--echo # End of 10.3 tests
|
--echo # End of 10.3 tests
|
||||||
--echo #
|
--echo #
|
||||||
|
File diff suppressed because one or more lines are too long
@ -825,6 +825,8 @@ static int skip_colon(json_engine_t *j)
|
|||||||
static int skip_key(json_engine_t *j)
|
static int skip_key(json_engine_t *j)
|
||||||
{
|
{
|
||||||
int t_next, c_len;
|
int t_next, c_len;
|
||||||
|
|
||||||
|
j->s.c_str-= j->sav_c_len;
|
||||||
while (json_read_keyname_chr(j) == 0) {}
|
while (json_read_keyname_chr(j) == 0) {}
|
||||||
|
|
||||||
if (j->s.error)
|
if (j->s.error)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user