diff options
author | unknown <thek@adventure.(none)> | 2008-03-25 12:52:55 +0100 |
---|---|---|
committer | unknown <thek@adventure.(none)> | 2008-03-25 12:52:55 +0100 |
commit | a3126bfc2ecdbe321ff05e5810e2eb6b631d02ca (patch) | |
tree | a0f34db532da26c7888c742adb24d17259bb872e | |
parent | 0769fe559036512506736768fb31ddb0482ac2e6 (diff) | |
download | mariadb-git-a3126bfc2ecdbe321ff05e5810e2eb6b631d02ca.tar.gz |
Bug#33275 Server crash when creating temporary table mysql.user
When creating a temporary table that uses the same name as the mysql
privs table the server would crash on FLUSH PRIVILEGES.
This patches corrects the problem by setting a flag to ignore any
temporary table when trying to reload the privileges.
mysql-test/r/grant.result:
Test for checking shadowing of privilege tables
mysql-test/t/grant.test:
Test for checking shadowing of privilege tables
sql/sql_acl.cc:
Set flag for ignoring temporary tables when trying to reload privileges.
-rw-r--r-- | mysql-test/r/grant.result | 6 | ||||
-rw-r--r-- | mysql-test/t/grant.test | 7 | ||||
-rw-r--r-- | sql/sql_acl.cc | 5 |
3 files changed, 17 insertions, 1 deletions
diff --git a/mysql-test/r/grant.result b/mysql-test/r/grant.result index e27ef64af43..8a89a9dc264 100644 --- a/mysql-test/r/grant.result +++ b/mysql-test/r/grant.result @@ -1129,4 +1129,10 @@ DROP USER mysqltest_1@localhost; DROP DATABASE db27878; use test; DROP TABLE t1; +# +# Bug#33275 Server crash when creating temporary table mysql.user +# +CREATE TEMPORARY TABLE mysql.user (id INT); +FLUSH PRIVILEGES; +DROP TABLE mysql.user; End of 5.0 tests diff --git a/mysql-test/t/grant.test b/mysql-test/t/grant.test index ed95d90c8f8..93c416133e8 100644 --- a/mysql-test/t/grant.test +++ b/mysql-test/t/grant.test @@ -1153,4 +1153,11 @@ DROP DATABASE db27878; use test; DROP TABLE t1; +--echo # +--echo # Bug#33275 Server crash when creating temporary table mysql.user +--echo # +CREATE TEMPORARY TABLE mysql.user (id INT); +FLUSH PRIVILEGES; +DROP TABLE mysql.user; + --echo End of 5.0 tests diff --git a/sql/sql_acl.cc b/sql/sql_acl.cc index 8fdd054eb39..64b1e699289 100644 --- a/sql/sql_acl.cc +++ b/sql/sql_acl.cc @@ -558,6 +558,8 @@ my_bool acl_reload(THD *thd) tables[0].next_local= tables[0].next_global= tables+1; tables[1].next_local= tables[1].next_global= tables+2; tables[0].lock_type=tables[1].lock_type=tables[2].lock_type=TL_READ; + tables[0].skip_temporary= tables[1].skip_temporary= + tables[2].skip_temporary= TRUE; if (simple_open_n_lock_tables(thd, tables)) { @@ -3528,7 +3530,8 @@ my_bool grant_reload(THD *thd) tables[0].next_local= tables[0].next_global= tables+1; tables[1].next_local= tables[1].next_global= tables+2; tables[0].lock_type= tables[1].lock_type= tables[2].lock_type= TL_READ; - + tables[0].skip_temporary= tables[1].skip_temporary= + tables[2].skip_temporary= TRUE; /* To avoid deadlocks we should obtain table locks before obtaining LOCK_grant rwlock. |