mirror of
https://github.com/MariaDB/server.git
synced 2025-01-18 21:12:26 +01:00
Fix for bug #27515: DROP previlege is not required anymore for RENAME TABLE
Added missed DROP privilege check on the original table for RENAME TABLE command.
This commit is contained in:
parent
8d0755ba47
commit
f4060b4b81
3 changed files with 34 additions and 2 deletions
|
@ -492,3 +492,14 @@ delete from mysql.db where user='mysqltest1';
|
||||||
delete from mysql.tables_priv where user='mysqltest1';
|
delete from mysql.tables_priv where user='mysqltest1';
|
||||||
flush privileges;
|
flush privileges;
|
||||||
drop database mysqltest;
|
drop database mysqltest;
|
||||||
|
create database db27515;
|
||||||
|
use db27515;
|
||||||
|
create table t1 (a int);
|
||||||
|
grant alter on db27515.t1 to user27515@localhost;
|
||||||
|
grant insert, create on db27515.t2 to user27515@localhost;
|
||||||
|
rename table t1 to t2;
|
||||||
|
ERROR 42000: DROP command denied to user 'user27515'@'localhost' for table 't1'
|
||||||
|
revoke all privileges, grant option from user27515@localhost;
|
||||||
|
drop user user27515@localhost;
|
||||||
|
drop database db27515;
|
||||||
|
End of 4.1 tests
|
||||||
|
|
|
@ -451,4 +451,25 @@ delete from mysql.tables_priv where user='mysqltest1';
|
||||||
flush privileges;
|
flush privileges;
|
||||||
drop database mysqltest;
|
drop database mysqltest;
|
||||||
|
|
||||||
# End of 4.1 tests
|
#
|
||||||
|
# Bug #27515: DROP previlege is not required for RENAME TABLE
|
||||||
|
#
|
||||||
|
connection master;
|
||||||
|
create database db27515;
|
||||||
|
use db27515;
|
||||||
|
create table t1 (a int);
|
||||||
|
grant alter on db27515.t1 to user27515@localhost;
|
||||||
|
grant insert, create on db27515.t2 to user27515@localhost;
|
||||||
|
|
||||||
|
connect (conn27515, localhost, user27515, , db27515);
|
||||||
|
connection conn27515;
|
||||||
|
--error 1142
|
||||||
|
rename table t1 to t2;
|
||||||
|
disconnect conn27515;
|
||||||
|
|
||||||
|
connection master;
|
||||||
|
revoke all privileges, grant option from user27515@localhost;
|
||||||
|
drop user user27515@localhost;
|
||||||
|
drop database db27515;
|
||||||
|
|
||||||
|
--echo End of 4.1 tests
|
||||||
|
|
|
@ -2818,7 +2818,7 @@ unsent_create_error:
|
||||||
old_list=table[0];
|
old_list=table[0];
|
||||||
new_list=table->next[0];
|
new_list=table->next[0];
|
||||||
old_list.next=new_list.next=0;
|
old_list.next=new_list.next=0;
|
||||||
if (check_grant(thd, ALTER_ACL, &old_list, 0, UINT_MAX, 0) ||
|
if (check_grant(thd, ALTER_ACL | DROP_ACL, &old_list, 0, UINT_MAX, 0) ||
|
||||||
(!test_all_bits(table->next->grant.privilege,
|
(!test_all_bits(table->next->grant.privilege,
|
||||||
INSERT_ACL | CREATE_ACL) &&
|
INSERT_ACL | CREATE_ACL) &&
|
||||||
check_grant(thd, INSERT_ACL | CREATE_ACL, &new_list, 0,
|
check_grant(thd, INSERT_ACL | CREATE_ACL, &new_list, 0,
|
||||||
|
|
Loading…
Reference in a new issue