Skip to content

Commit

Permalink
MDEV-13970 crash in Item_func_json_extract::read_json.
Browse files Browse the repository at this point in the history
        Item_func_json_extract::val_int fixed.
        It wasn't tested yet as it's called in exotic cases only.
  • Loading branch information
Alexey Botchkov committed Dec 25, 2017
1 parent 6e7ca6b commit f0f3b65
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 3 deletions.
5 changes: 5 additions & 0 deletions mysql-test/r/func_json.result
Original file line number Diff line number Diff line change
Expand Up @@ -731,3 +731,8 @@ Warning 4042 Syntax error in JSON path in argument 3 to function 'json_contains_
select JSON_VALID(0x36f0c8dccd83c5eac156da);
JSON_VALID(0x36f0c8dccd83c5eac156da)
0
create table t1(a double not null);
insert into t1 values (2),(1);
select 1 from t1 where json_extract(a,'$','$[81]');
1
drop table t1;
9 changes: 9 additions & 0 deletions mysql-test/t/func_json.test
Original file line number Diff line number Diff line change
Expand Up @@ -383,3 +383,12 @@ select json_contains_path('{"foo":"bar"}', 'one', '$[]');
# MDEV-13971 crash in skip_num_constant.
#
select JSON_VALID(0x36f0c8dccd83c5eac156da);

#
# MDEV-13970 crash in Item_func_json_extract::read_json.
#
create table t1(a double not null);
insert into t1 values (2),(1);
select 1 from t1 where json_extract(a,'$','$[81]');
drop table t1;

6 changes: 3 additions & 3 deletions sql/item_jsonfunc.cc
Original file line number Diff line number Diff line change
Expand Up @@ -781,10 +781,10 @@ String *Item_func_json_extract::read_json(String *str,
{
str->set_charset(js->charset());
str->length(0);
}

if (possible_multiple_values && str->append("[", 1))
goto error;
if (possible_multiple_values && str->append("[", 1))
goto error;
}

json_get_path_start(&je, js->charset(),(const uchar *) js->ptr(),
(const uchar *) js->ptr() + js->length(), &p);
Expand Down

0 comments on commit f0f3b65

Please sign in to comment.