[MDEV-30526]  Assertion `rights == merged->cols' failed in update_role_columns Created: 2023-01-31  Updated: 2023-02-22  Resolved: 2023-02-22

Status: Closed
Project: MariaDB Server
Component/s: Authentication and Privilege System
Affects Version/s: 10.3, 10.4, 10.5, 10.6, 10.7, 10.8, 10.9, 10.10, 10.11
Fix Version/s: 10.11.3, 10.3.39, 10.4.29, 10.5.20, 10.6.13, 10.8.8, 10.9.6, 10.10.4

Type: Bug Priority: Major
Reporter: Alice Sherepa Assignee: Sergei Golubchik
Resolution: Fixed Votes: 0
Labels: None

Issue Links:
Relates
relates to MDEV-18003 Assertion `grantee->counter > 0' fail... Confirmed

 Description   

CREATE TABLE t1 (pk int, i int);
 
CREATE ROLE a;
 
GRANT SELECT (i), UPDATE (pk) ON t1 TO a;
REVOKE  UPDATE (pk) ON t1 FROM a;

Version: '10.3.38-MariaDB-debug-log'  
mysqld: /10.3/src/sql/sql_acl.cc:6103: int update_role_columns(GRANT_TABLE*, GRANT_TABLE**, GRANT_TABLE**): Assertion `rights == merged->cols' failed.
230131 15:58:21 [ERROR] mysqld got signal 6 ;
 
Server version: 10.3.38-MariaDB-debug-log source revision: f812f8e1ab7acc5dd17daf5ab5f73495c7963af5
 
sql/sql_acl.cc:6104(update_role_columns(GRANT_TABLE*, GRANT_TABLE**, GRANT_TABLE**))[0x55d2bbf45137]
sql/sql_acl.cc:6164(update_role_table_columns(GRANT_TABLE*, GRANT_TABLE**, GRANT_TABLE**, unsigned long, unsigned long, char const*))[0x55d2bbf45528]
sql/sql_acl.cc:6226(merge_role_table_and_column_privileges(ACL_ROLE*, char const*, char const*, Hash_set<ACL_ROLE>*))[0x55d2bbf45e07]
sql/sql_acl.cc:6383(merge_role_privileges(ACL_ROLE*, ACL_ROLE*, void*))[0x55d2bbf471ad]
sql/sql_acl.cc:6407(merge_one_role_privileges(ACL_ROLE*, PRIVS_TO_MERGE))[0x55d2bbf4773c]
sql/sql_acl.cc:5613(propagate_role_grants(ACL_ROLE*, PRIVS_TO_MERGE::what, char const*, char const*))[0x55d2bbf41efa]
sql/sql_acl.cc:6589(mysql_table_grant(THD*, TABLE_LIST*, List<LEX_USER>&, List<LEX_COLUMN>&, unsigned long, bool))[0x55d2bbf493f0]
sql/sql_parse.cc:5298(mysql_execute_command(THD*))[0x55d2bc119c91]
sql/sql_parse.cc:7855(mysql_parse(THD*, char*, unsigned int, Parser_state*, bool, bool))[0x55d2bc12b3ea]
sql/sql_parse.cc:1855(dispatch_command(enum_server_command, THD*, char*, unsigned int, bool, bool))[0x55d2bc1023a7]
sql/sql_parse.cc:1398(do_command(THD*))[0x55d2bc0feec6]
sql/sql_connect.cc:1404(do_handle_one_connection(CONNECT*))[0x55d2bc4d562d]
sql/sql_connect.cc:1310(handle_one_connection)[0x55d2bc4d4ee7]
perfschema/pfs.cc:1871(pfs_spawn_thread)[0x55d2bdb0c201]
nptl/pthread_create.c:478(start_thread)[0x7f4e9c32c609]
 
Query (0x62b000000290): REVOKE  UPDATE (pk) ON t1 FROM a

also slight variation:

preview-11.0-preview 3340d2c670127f41f

/preview-11.0-preview/sql/sql_acl.cc:6785: int update_role_columns(GRANT_TABLE*, GRANT_TABLE**, GRANT_TABLE**): Assertion `rights == merged->cols' failed.
230131 14:28:56 [ERROR] mysqld got signal 6 ;
sion: 11.0.0-MariaDB-debug-log
 
??:0(__assert_fail)[0x7f28ff299fd6]
sql/sql_acl.cc:6786(update_role_columns(GRANT_TABLE*, GRANT_TABLE**, GRANT_TABLE**))[0x55f3655207d7]
sql/sql_acl.cc:6847(update_role_table_columns(GRANT_TABLE*, GRANT_TABLE**, GRANT_TABLE**, privilege_t, privilege_t, char const*))[0x55f365520c3e]
sql/sql_acl.cc:6910(merge_role_table_and_column_privileges(ACL_ROLE*, char const*, char const*, Hash_set<ACL_ROLE>*))[0x55f365521726]
sql/sql_acl.cc:7067(merge_role_privileges(ACL_ROLE*, ACL_ROLE*, void*))[0x55f365522c12]
sql/sql_acl.cc:6444(traverse_role_graph_impl(ACL_USER_BASE*, void*, long, int (*)(ACL_USER_BASE*, void*), int (*)(ACL_USER_BASE*, ACL_ROLE*, void*)))[0x55f36551e260]
sql/sql_acl.cc:6510(traverse_role_graph_up(ACL_ROLE*, void*, int (*)(ACL_ROLE*, void*), int (*)(ACL_ROLE*, ACL_ROLE*, void*)))[0x55f36551ec90]
sql/sql_acl.cc:6323(propagate_role_grants(ACL_ROLE*, PRIVS_TO_MERGE::what, char const*, char const*))[0x55f36551d26e]
sql/sql_acl.cc:10499(handle_grant_struct(enum_acl_lists, bool, LEX_USER*, LEX_USER*))[0x55f36553b0c0]
sql/sql_acl.cc:10989(handle_grant_data(THD*, Grant_tables&, bool, LEX_USER*, LEX_USER*))[0x55f36553cf69]
sql/sql_acl.cc:11075(mysql_create_user(THD*, List<LEX_USER>&, bool))[0x55f36553d6a4]
sql/sql_parse.cc:5333(mysql_execute_command(THD*, bool))[0x55f365742626]
sql/sql_parse.cc:8000(mysql_parse(THD*, char*, unsigned int, Parser_state*))[0x55f365754552]
sql/sql_parse.cc:1896(dispatch_command(enum_server_command, THD*, char*, unsigned int, bool))[0x55f36572a780]
sql/sql_parse.cc:1407(do_command(THD*, bool))[0x55f3657274bc]
sql/sql_connect.cc:1416(do_handle_one_connection(CONNECT*, bool))[0x55f365bf0cf7]
sql/sql_connect.cc:1320(handle_one_connection)[0x55f365bf0654]
perfschema/pfs.cc:2203(pfs_spawn_thread)[0x55f36680a4f4]
nptl/pthread_create.c:478(start_thread)[0x7f28ff7b4609]


Generated at Thu Feb 08 10:16:53 UTC 2024 using Jira 8.20.16#820016-sha1:9d11dbea5f4be3d4cc21f03a88dd11d8c8687422.