summaryrefslogtreecommitdiff
path: root/sql/sql_view.cc
diff options
context:
space:
mode:
authorAlexey Kopytov <Alexey.Kopytov@Sun.com>2010-05-21 15:23:48 +0400
committerAlexey Kopytov <Alexey.Kopytov@Sun.com>2010-05-21 15:23:48 +0400
commit779e2a968632a5e73c660307892ca6a868399dfc (patch)
tree393cb5d35a1dc953f8e9fee7b6c06737b675ba9c /sql/sql_view.cc
parentf512cb4eaf0fbbf8cfa0444189da94f0215d8c5c (diff)
downloadmariadb-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/sql_view.cc')
-rw-r--r--sql/sql_view.cc7
1 files changed, 4 insertions, 3 deletions
diff --git a/sql/sql_view.cc b/sql/sql_view.cc
index 5ec80dfb621..340409aa42f 100644
--- a/sql/sql_view.cc
+++ b/sql/sql_view.cc
@@ -1190,9 +1190,10 @@ bool mysql_make_view(THD *thd, File_parser *parser, TABLE_LIST *table,
char old_db_buf[NAME_LEN+1];
LEX_STRING old_db= { old_db_buf, sizeof(old_db_buf) };
bool dbchanged;
- Parser_state parser_state(thd,
- table->select_stmt.str,
- table->select_stmt.length);
+ Parser_state parser_state;
+ if (parser_state.init(thd, table->select_stmt.str,
+ table->select_stmt.length))
+ goto err;
/*
Use view db name as thread default database, in order to ensure