summaryrefslogtreecommitdiff
path: root/sql/sql_acl.cc
diff options
context:
space:
mode:
authorSergei Golubchik <serg@mariadb.org>2019-04-25 18:15:12 +0200
committerSergei Golubchik <serg@mariadb.org>2019-04-25 21:43:31 +0200
commitda0e00e7103dce1918dcde632ea317d8dd6c12d5 (patch)
tree7cce844ff2199349914b67f6606aac94f76b249b /sql/sql_acl.cc
parent33fe3b58ccb88ed48362a0710a2ede2853327c77 (diff)
downloadmariadb-git-da0e00e7103dce1918dcde632ea317d8dd6c12d5.tar.gz
Bug#28986737: RENAMING AND REPLACING MYSQL.USER TABLE CAN LEAD TO A SERVER CRASH
Diffstat (limited to 'sql/sql_acl.cc')
-rw-r--r--sql/sql_acl.cc8
1 files changed, 8 insertions, 0 deletions
diff --git a/sql/sql_acl.cc b/sql/sql_acl.cc
index 5d7f82ff5dd..b916f96300a 100644
--- a/sql/sql_acl.cc
+++ b/sql/sql_acl.cc
@@ -825,6 +825,14 @@ static my_bool acl_load(THD *thd, TABLE_LIST *tables)
goto end;
table->use_all_columns();
+
+ if (table->s->fields < 13) // number of columns in 3.21
+ {
+ sql_print_error("Fatal error: mysql.user table is damaged or in "
+ "unsupported 3.20 format.");
+ goto end;
+ }
+
username_char_length= min(table->field[1]->char_length(), USERNAME_CHAR_LENGTH);
password_length= table->field[2]->field_length /
table->field[2]->charset()->mbmaxlen;