summaryrefslogtreecommitdiff
path: root/sql/sql_yacc.yy
diff options
context:
space:
mode:
Diffstat (limited to 'sql/sql_yacc.yy')
-rw-r--r--sql/sql_yacc.yy12
1 files changed, 7 insertions, 5 deletions
diff --git a/sql/sql_yacc.yy b/sql/sql_yacc.yy
index 45c3e94f0ff..a69b6a96982 100644
--- a/sql/sql_yacc.yy
+++ b/sql/sql_yacc.yy
@@ -1760,13 +1760,15 @@ sp_cond:
}
| SQLSTATE_SYM opt_value TEXT_STRING_literal
{ /* SQLSTATE */
- uint len= ($3.length < sizeof($$->sqlstate)-1 ?
- $3.length : sizeof($$->sqlstate)-1);
-
+ if (!sp_cond_check(&$3))
+ {
+ my_error(ER_SP_BAD_SQLSTATE, MYF(0), $3.str);
+ YYABORT;
+ }
$$= (sp_cond_type_t *)YYTHD->alloc(sizeof(sp_cond_type_t));
$$->type= sp_cond_type_t::state;
- memcpy($$->sqlstate, $3.str, len);
- $$->sqlstate[len]= '\0';
+ memcpy($$->sqlstate, $3.str, 5);
+ $$->sqlstate[5]= '\0';
}
;