mirror of
https://github.com/MariaDB/server.git
synced 2025-01-17 12:32:27 +01:00
eb4f2e063c
Role names with trailing whitespaces are truncated in length as of
956e92d908
to fix MDEV-8609. The problem
is that the code that creates role mappings expects the string to be null
terminated.
Add the null terminator to account for that as well. In the future
the rest of the code can be cleaned up to never assume c style strings
but only LEX_STRINGS.
109 lines
2.5 KiB
Text
109 lines
2.5 KiB
Text
source include/not_embedded.inc;
|
|
|
|
connect (mysql, localhost, root,,);
|
|
use mysql;
|
|
|
|
#test valid syntax
|
|
--error ER_PARSE_ERROR
|
|
create role test_role1@host1;
|
|
--error ER_PARSE_ERROR
|
|
create role test_role2@host2, test_role1@host1;
|
|
|
|
create role test_role1;
|
|
create role test_role2, test_role3;
|
|
|
|
--sorted_result
|
|
select user, host, is_role from user where user like 'test%';
|
|
|
|
drop role test_role1;
|
|
drop role test_role2, test_role3;
|
|
|
|
create role test_role1;
|
|
--error ER_CANNOT_USER
|
|
create role test_role1;
|
|
--error ER_CANNOT_USER
|
|
create role test_role1, test_role2;
|
|
|
|
--sorted_result
|
|
select user, host, is_role from user where user like 'test%';
|
|
|
|
drop role test_role1;
|
|
--error ER_CANNOT_USER
|
|
drop role test_role1;
|
|
--error ER_CANNOT_USER
|
|
drop role test_role1, test_role2;
|
|
|
|
#test that we can not drop users when calling drop role
|
|
--error ER_CANNOT_USER
|
|
drop role root;
|
|
create user dummy@'';
|
|
--error ER_CANNOT_USER
|
|
drop role dummy;
|
|
drop user dummy@'';
|
|
|
|
--sorted_result
|
|
select user, host, is_role from user where user like 'test%';
|
|
disconnect mysql;
|
|
connection default;
|
|
|
|
#
|
|
# MDEV-5520 Connection lost on wrong CREATE ROLE
|
|
#
|
|
--error ER_INVALID_ROLE
|
|
create role '';
|
|
|
|
#
|
|
# MDEV-8609 Server crashes in is_invalid_role_name on reloading ACL with a blank role name
|
|
#
|
|
--error ER_INVALID_ROLE
|
|
create role ' ';
|
|
create role 'foo ';
|
|
drop role foo;
|
|
|
|
#
|
|
# MDEV-5523 Server crashes on DROP USER <rolename>
|
|
#
|
|
create role r1;
|
|
--error ER_CANNOT_USER
|
|
drop user r1;
|
|
drop role r1;
|
|
|
|
#
|
|
# MDEV-5525 Assertion `status == 0' fails on creating user after granting it role admin option
|
|
#
|
|
create role r1 with admin u1;
|
|
create user foo@bar;
|
|
drop user foo@bar;
|
|
drop role r1;
|
|
|
|
#
|
|
# MDEV-7774 Assertion `status == 0' fails when dropping in this order:
|
|
#
|
|
CREATE USER u1;
|
|
CREATE ROLE r1;
|
|
CREATE USER r1@localhost;
|
|
CREATE ROLE r2;
|
|
GRANT r2 to r1;
|
|
GRANT r2 to r1@localhost;
|
|
# MDEV-7774: Dropping in this order caused the crash.
|
|
DROP ROLE r1;
|
|
--sorted_result
|
|
SELECT * FROM mysql.roles_mapping;
|
|
SHOW GRANTS FOR r1@localhost; # Related to MDEV-7774, also caused a crash, by
|
|
# not updating the internal acl_roles_mapping
|
|
# data structure correctly;
|
|
DROP USER u1;
|
|
DROP ROLE r2;
|
|
DROP USER r1@localhost;
|
|
|
|
#
|
|
# MDEV-11533: Roles with trailing white spaces are not cleared correctly
|
|
#
|
|
create role 'foo ';
|
|
select concat(user, '__'), is_role from mysql.user where user like 'foo%';
|
|
select * from mysql.roles_mapping;
|
|
drop role foo;
|
|
select concat(user, '__'), is_role from mysql.user where user like 'foo%';
|
|
select * from mysql.roles_mapping;
|
|
--sorted_result
|
|
show grants;
|