Commit 5e8fbc83 authored by unknown's avatar unknown

Fixed BUG#10537: Server crashes while loading data file into table through

                  procedure.
  by simply disabling 'load' in stored procedures, like it's already disabled
  for prepared statements. (They must be made "re-execution" safe before
  working with either PS or SP.)


mysql-test/r/sp-error.result:
  New test case for BUG#10537.
mysql-test/t/sp-error.test:
  New test case for BUG#10537.
sql/sql_yacc.yy:
  Disable LOAD in stored procedures (just as for prepared statements).
parent cb31e251
...@@ -642,4 +642,8 @@ val x bug8408() ...@@ -642,4 +642,8 @@ val x bug8408()
7 7 3 7 7 3
drop function bug8408| drop function bug8408|
delete from t1| delete from t1|
drop procedure if exists bug10537|
create procedure bug10537()
load data local infile '/tmp/somefile' into table t1|
ERROR 0A000: LOAD DATA is not allowed in stored procedures
drop table t1| drop table t1|
...@@ -893,6 +893,18 @@ drop function bug8408| ...@@ -893,6 +893,18 @@ drop function bug8408|
delete from t1| delete from t1|
#
# BUG#10537: Server crashes while loading data file into table through
# procedure.
# Disable load until it's PS and SP safe
--disable_warnings
drop procedure if exists bug10537|
--enable_warnings
--error ER_SP_BADSTATEMENT
create procedure bug10537()
load data local infile '/tmp/somefile' into table t1|
# #
# BUG#NNNN: New bug synopsis # BUG#NNNN: New bug synopsis
# #
......
...@@ -6611,6 +6611,11 @@ use: USE_SYM ident ...@@ -6611,6 +6611,11 @@ use: USE_SYM ident
load: LOAD DATA_SYM load: LOAD DATA_SYM
{ {
LEX *lex=Lex; LEX *lex=Lex;
if (lex->sphead)
{
my_error(ER_SP_BADSTATEMENT, MYF(0), "LOAD DATA");
YYABORT;
}
lex->fname_start= lex->ptr; lex->fname_start= lex->ptr;
} }
load_data load_data
...@@ -6618,7 +6623,13 @@ load: LOAD DATA_SYM ...@@ -6618,7 +6623,13 @@ load: LOAD DATA_SYM
| |
LOAD TABLE_SYM table_ident FROM MASTER_SYM LOAD TABLE_SYM table_ident FROM MASTER_SYM
{ {
Lex->sql_command = SQLCOM_LOAD_MASTER_TABLE; LEX *lex=Lex;
if (lex->sphead)
{
my_error(ER_SP_BADSTATEMENT, MYF(0), "LOAD TABLE");
YYABORT;
}
lex->sql_command = SQLCOM_LOAD_MASTER_TABLE;
if (!Select->add_table_to_list(YYTHD, $3, NULL, TL_OPTION_UPDATING)) if (!Select->add_table_to_list(YYTHD, $3, NULL, TL_OPTION_UPDATING))
YYABORT; YYABORT;
}; };
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment