summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--mysys/my_access.c3
-rw-r--r--strings/ctype-utf8.c4
2 files changed, 6 insertions, 1 deletions
diff --git a/mysys/my_access.c b/mysys/my_access.c
index 210946d50a8..43917da7f98 100644
--- a/mysys/my_access.c
+++ b/mysys/my_access.c
@@ -148,7 +148,8 @@ static char reserved_map[256]=
int check_if_legal_tablename(const char *name)
{
DBUG_ENTER("check_if_legal_tablename");
- DBUG_RETURN((reserved_map[(uchar) name[0]] & 1) &&
+ DBUG_RETURN(name[0] != 0 && name[1] != 0 &&
+ (reserved_map[(uchar) name[0]] & 1) &&
(reserved_map[(uchar) name[1]] & 2) &&
(reserved_map[(uchar) name[2]] & 4) &&
str_list_find(&reserved_names[1], name));
diff --git a/strings/ctype-utf8.c b/strings/ctype-utf8.c
index e5e055e8962..234898e9796 100644
--- a/strings/ctype-utf8.c
+++ b/strings/ctype-utf8.c
@@ -4421,6 +4421,10 @@ my_wc_mb_filename(CHARSET_INFO *cs __attribute__((unused)),
{
int code;
char hex[]= "0123456789abcdef";
+
+ if (s >= e)
+ return MY_CS_TOOSMALL;
+
if (wc < 128 && filename_safe_char[wc])
{
*s= (uchar) wc;