mirror of
https://github.com/MariaDB/server.git
synced 2026-10-23 18:49:29 +03:00
MDEV-40414 Server crash in Charset::charset upon JSON operations
JSON_EQUALS didn't check that ::val_str() of its arguments where not-null before attempting to test their equality. JSON_OVERLAPS also ensure that ::val_json() isn't null.
This commit is contained in:
@@ -2950,4 +2950,13 @@ JSON_EXTRACT('0E+0','$')
|
||||
SELECT JSON_ARRAY_INSERT (0,NULL,1) as j;
|
||||
j
|
||||
NULL
|
||||
#
|
||||
# MDEV-40414 Server crash in Charset::charset upon JSON operations
|
||||
#
|
||||
SELECT JSON_EQUALS('[]', JSON_ARRAY_INSERT(NULL,'$[0]',1)) AS x;
|
||||
x
|
||||
NULL
|
||||
SELECT JSON_OVERLAPS(JSON_ARRAY_INSERT(NULL,'$[0]',1), '[]') AS x;
|
||||
x
|
||||
NULL
|
||||
# End of 10.11 Test
|
||||
|
||||
@@ -2123,4 +2123,11 @@ SELECT JSON_EXTRACT('0E+0','$');
|
||||
|
||||
SELECT JSON_ARRAY_INSERT (0,NULL,1) as j;
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-40414 Server crash in Charset::charset upon JSON operations
|
||||
--echo #
|
||||
|
||||
SELECT JSON_EQUALS('[]', JSON_ARRAY_INSERT(NULL,'$[0]',1)) AS x;
|
||||
SELECT JSON_OVERLAPS(JSON_ARRAY_INSERT(NULL,'$[0]',1), '[]') AS x;
|
||||
|
||||
--echo # End of 10.11 Test
|
||||
|
||||
@@ -629,7 +629,11 @@ bool Item_func_json_equals::val_bool()
|
||||
return 1;
|
||||
|
||||
String *a= args[0]->val_json(&a_tmp);
|
||||
if ((null_value= a == nullptr))
|
||||
return 1;
|
||||
String *b= args[1]->val_json(&b_tmp);
|
||||
if ((null_value= b == nullptr))
|
||||
return 1;
|
||||
|
||||
DYNAMIC_STRING a_res;
|
||||
if (init_dynamic_string(&a_res, NULL, 0, 0))
|
||||
@@ -5043,7 +5047,7 @@ bool Item_func_json_overlaps::val_bool()
|
||||
int result;
|
||||
THD *thd;
|
||||
|
||||
if ((null_value= args[0]->null_value))
|
||||
if ((null_value= (js == nullptr) || args[0]->null_value))
|
||||
return 0;
|
||||
|
||||
thd= current_thd;
|
||||
|
||||
Reference in New Issue
Block a user