diff options
author | Alexey Kopytov <Alexey.Kopytov@Sun.com> | 2010-05-21 15:23:48 +0400 |
---|---|---|
committer | Alexey Kopytov <Alexey.Kopytov@Sun.com> | 2010-05-21 15:23:48 +0400 |
commit | 779e2a968632a5e73c660307892ca6a868399dfc (patch) | |
tree | 393cb5d35a1dc953f8e9fee7b6c06737b675ba9c /sql/sp.cc | |
parent | f512cb4eaf0fbbf8cfa0444189da94f0215d8c5c (diff) | |
download | mariadb-git-779e2a968632a5e73c660307892ca6a868399dfc.tar.gz |
Bug #42064: low memory crash when importing hex strings, in
Item_hex_string::Item_hex_string
The status of memory allocation in the Lex_input_stream (called
from the Parser_state constructor) was not checked which led to
a parser crash in case of the out-of-memory error.
The solution is to introduce new init() member function in
Parser_state and Lex_input_stream so that status of memory
allocation can be returned to the caller.
Diffstat (limited to 'sql/sp.cc')
-rw-r--r-- | sql/sp.cc | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/sql/sp.cc b/sql/sp.cc index ef69edb96c6..0eb652d5b16 100644 --- a/sql/sp.cc +++ b/sql/sp.cc @@ -782,7 +782,12 @@ db_load_routine(THD *thd, int type, sp_name *name, sp_head **sphp, thd->spcont= NULL; { - Parser_state parser_state(thd, defstr.c_ptr(), defstr.length()); + Parser_state parser_state; + if (parser_state.init(thd, defstr.c_ptr(), defstr.length())) + { + ret= SP_INTERNAL_ERROR; + goto end; + } lex_start(thd); |