From 9554ef067878c4650ef4b9ad44e0b222cdb313a5 Mon Sep 17 00:00:00 2001 From: Alexey Botchkov Date: Thu, 12 Sep 2019 11:12:55 +0400 Subject: MDEV-19670 json escaped unicode parse error. Fixed 4-byte length characters handled incorrectly. --- strings/json_lib.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'strings/json_lib.c') diff --git a/strings/json_lib.c b/strings/json_lib.c index 24c79cb9044..77b41dceb20 100644 --- a/strings/json_lib.c +++ b/strings/json_lib.c @@ -320,15 +320,17 @@ static int json_handle_esc(json_string_t *s) if (s->c_next != '\\') return s->error= JE_SYN; + s->c_str+= c_len; if ((c_len= json_next_char(s)) <= 0) return s->error= json_eos(s) ? JE_EOS : JE_BAD_CHR; if (s->c_next != 'u') return s->error= JE_SYN; + s->c_str+= c_len; if (read_4_hexdigits(s, code+2)) return 1; - if ((c_len= my_utf16_uni(0, &s->c_next, code, code+4)) == 2) + if ((c_len= my_utf16_uni(0, &s->c_next, code, code+4)) == 4) return 0; } return s->error= JE_BAD_CHR; -- cgit v1.2.1