mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
MDEV-26724 Endless loop in json_escape_to_string upon ... empty string
Correctly handle empty string when [un]escaping JSON
This commit is contained in:
@ -7853,3 +7853,19 @@ test.t1 analyze status OK
|
||||
select * from t1 where a = 'foo';
|
||||
a
|
||||
drop table t1;
|
||||
#
|
||||
# MDEV-26724 Endless loop in json_escape_to_string upon ... empty string
|
||||
#
|
||||
CREATE TABLE t1 (f VARCHAR(8));
|
||||
INSERT INTO t1 VALUES ('a'),(''),('b');
|
||||
SET histogram_type=JSON_HB;
|
||||
ANALYZE TABLE t PERSISTENT FOR ALL;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t analyze Error Table 'test.t' doesn't exist
|
||||
test.t analyze status Operation failed
|
||||
select * from t1;
|
||||
f
|
||||
a
|
||||
|
||||
b
|
||||
drop table t1;
|
||||
|
@ -193,3 +193,13 @@ analyze table t1 persistent for all;
|
||||
select * from t1 where a = 'foo';
|
||||
drop table t1;
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-26724 Endless loop in json_escape_to_string upon ... empty string
|
||||
--echo #
|
||||
CREATE TABLE t1 (f VARCHAR(8));
|
||||
INSERT INTO t1 VALUES ('a'),(''),('b');
|
||||
SET histogram_type=JSON_HB;
|
||||
ANALYZE TABLE t PERSISTENT FOR ALL;
|
||||
select * from t1;
|
||||
drop table t1;
|
||||
|
||||
|
@ -41,7 +41,7 @@ static bool json_unescape_to_string(const char *val, int val_len, String* out)
|
||||
(const uchar*)val + val_len,
|
||||
&my_charset_utf8mb4_bin,
|
||||
buf, buf + out->length());
|
||||
if (res > 0)
|
||||
if (res >= 0)
|
||||
{
|
||||
out->length(res);
|
||||
return false; // Ok
|
||||
@ -74,7 +74,7 @@ static bool json_escape_to_string(const char *val, int val_len, String* out)
|
||||
(const uchar*)val + val_len,
|
||||
&my_charset_utf8mb4_bin,
|
||||
buf, buf + out->length());
|
||||
if (res > 0)
|
||||
if (res >= 0)
|
||||
{
|
||||
out->length(res);
|
||||
return false; // Ok
|
||||
|
Reference in New Issue
Block a user