diff options
author | Sergei Golubchik <serg@mariadb.org> | 2020-07-30 10:01:49 +0200 |
---|---|---|
committer | Sergei Golubchik <serg@mariadb.org> | 2020-07-30 23:50:56 +0200 |
commit | 4635218cb07ee15244c7a6bbcf6eeeeb7cec7fcf (patch) | |
tree | 27bb26cc6e3d23d2b1172a3fa23926a5e141eb3e | |
parent | 4860fe244bd1f4a6f3b803648d651e49e7b92a2c (diff) | |
download | mariadb-git-4635218cb07ee15244c7a6bbcf6eeeeb7cec7fcf.tar.gz |
MDEV-22521 Server crashes in traverse_role_graph_up or Assertion `user' fails in traverse_role_graph_impl
-rw-r--r-- | mysql-test/suite/roles/drop_current_role.result | 5 | ||||
-rw-r--r-- | mysql-test/suite/roles/drop_current_role.test | 9 | ||||
-rw-r--r-- | sql/sql_acl.cc | 2 |
3 files changed, 16 insertions, 0 deletions
diff --git a/mysql-test/suite/roles/drop_current_role.result b/mysql-test/suite/roles/drop_current_role.result new file mode 100644 index 00000000000..79525a0ff50 --- /dev/null +++ b/mysql-test/suite/roles/drop_current_role.result @@ -0,0 +1,5 @@ +create role r; +set role r; +drop role r; +revoke all on *.* from current_role; +ERROR 42000: There is no such grant defined for user 'r' on host '' diff --git a/mysql-test/suite/roles/drop_current_role.test b/mysql-test/suite/roles/drop_current_role.test new file mode 100644 index 00000000000..1485b830eed --- /dev/null +++ b/mysql-test/suite/roles/drop_current_role.test @@ -0,0 +1,9 @@ +--source include/not_embedded.inc +# +# MDEV-22521 Server crashes in traverse_role_graph_up or Assertion `user' fails in traverse_role_graph_impl +# +create role r; +set role r; +drop role r; +error ER_NONEXISTING_GRANT; +revoke all on *.* from current_role; diff --git a/sql/sql_acl.cc b/sql/sql_acl.cc index 7925ec58852..fee337925fc 100644 --- a/sql/sql_acl.cc +++ b/sql/sql_acl.cc @@ -4977,6 +4977,8 @@ static void propagate_role_grants(ACL_ROLE *role, enum PRIVS_TO_MERGE::what what, const char *db= 0, const char *name= 0) { + if (!role) + return; mysql_mutex_assert_owner(&acl_cache->lock); PRIVS_TO_MERGE data= { what, db, name }; |