Skip to content

Commit fd229c0

Browse files
committed
Bug #27595603: SETTING SYSTEM VARIABLE CAN CAUSE SERVER EXIT
The fix rejects malformed assignments with a syntax error.
1 parent 9f81ac6 commit fd229c0

File tree

1 file changed

+10
-2
lines changed

1 file changed

+10
-2
lines changed

sql/sql_yacc.yy

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13088,7 +13088,15 @@ option_value:
1308813088
MYSQL_YYABORT;
1308913089
Lex->var_list.push_back(var);
1309013090
}
13091-
| '@' '@' opt_var_ident_type internal_variable_name equal set_expr_or_default
13091+
| '@' '@' opt_var_ident_type internal_variable_name
13092+
{
13093+
if ($4.var == trg_new_row_fake_var)
13094+
{
13095+
my_parse_error(ER(ER_SYNTAX_ERROR));
13096+
MYSQL_YYABORT;
13097+
}
13098+
}
13099+
equal set_expr_or_default
1309213100
{
1309313101
THD *thd= YYTHD;
1309413102
struct sys_var_with_base tmp= $4;
@@ -13098,7 +13106,7 @@ option_value:
1309813106
if (find_sys_var_null_base(thd, &tmp))
1309913107
MYSQL_YYABORT;
1310013108
}
13101-
if (set_system_variable(thd, &tmp, $3, $6))
13109+
if (set_system_variable(thd, &tmp, $3, $7))
1310213110
MYSQL_YYABORT;
1310313111
}
1310413112
| charset old_or_new_charset_name_or_default

0 commit comments

Comments
 (0)