1
0
mirror of https://github.com/MariaDB/server.git synced 2025-06-04 18:03:14 +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:
Alexey Botchkov 2019-09-30 14:43:32 +04:00
parent 2911a9a693
commit 6ac2a35553
4 changed files with 25 additions and 1 deletions

View File

@ -951,5 +951,17 @@ SELECT json_valid('{"test": "\\ud83d\\ude0b"}');
json_valid('{"test": "\\ud83d\\ude0b"}')
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
#

View File

@ -568,6 +568,16 @@ SELECT
SELECT json_valid('{"value":"\\ud83d\\ude0a"}');
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 # End of 10.3 tests
--echo #

File diff suppressed because one or more lines are too long

View File

@ -825,6 +825,8 @@ static int skip_colon(json_engine_t *j)
static int skip_key(json_engine_t *j)
{
int t_next, c_len;
j->s.c_str-= j->sav_c_len;
while (json_read_keyname_chr(j) == 0) {}
if (j->s.error)