Uploaded image for project: 'MariaDB Server'
  1. MariaDB Server
  2. MDEV-40028

Assertion `rights.allow_bits() == merged->cols' failed in int update_role_columns(GRANT_TABLE *, GRANT_TABLE **, GRANT_TABLE **)

    XMLWordPrintable

Details

    • Not for Release Notes

    Description

      CREATE DATABASE rdb;
      CREATE TABLE rdb.t (c1 INT, c2 INT, c3 INT);
       
      --echo #
      --echo # 1) Column DENY to a ROLE  (crashes debug build on this statement)
      --echo #
      CREATE ROLE rA;
      DENY SELECT (c2) ON rdb.t TO rA;
       
      --echo # Cleanup
      DROP ROLE rA;
      DROP USER u1@localhost;
      DROP DATABASE rdb;
      

      Leads to

      MDEV-14443 CS 13.1.0 8bd0360b2167588c001350903bbe344c6c0f1c5a (Debug, Clang 18.1.3-11) Build 12/06/2026

      mariadbd: /test/mtest/MDEV-14443/MDEV-14443_dbg/sql/sql_acl.cc:8319: int update_role_columns(GRANT_TABLE *, GRANT_TABLE **, GRANT_TABLE **): Assertion `rights.allow_bits() == merged->cols' failed.
      

      MDEV-14443 CS 13.1.0 8bd0360b2167588c001350903bbe344c6c0f1c5a (Debug, Clang 18.1.3-11) Build 12/06/2026

      Core was generated by `/test/mtest/MDEV-14443/MD120626-mariadb-13.1.0-linux-x86_64-dbg/bin/mariadbd --'.
      Program terminated with signal SIGABRT, Aborted.
      #0  __pthread_kill_implementation (no_tid=0, signo=6, threadid=<optimized out>)at ./nptl/pthread_kill.c:44
       
      [Current thread is 1 (LWP 1713600)]
      (gdb) bt
      #0  __pthread_kill_implementation (no_tid=0, signo=6, threadid=<optimized out>)at ./nptl/pthread_kill.c:44
      #1  __pthread_kill_internal (signo=6, threadid=<optimized out>)at ./nptl/pthread_kill.c:78
      #2  __GI___pthread_kill (threadid=<optimized out>, signo=signo@entry=6)at ./nptl/pthread_kill.c:89
      #3  0x00007b510804527e in __GI_raise (sig=sig@entry=6)at ../sysdeps/posix/raise.c:26
      #4  0x00007b51080288ff in __GI_abort () at ./stdlib/abort.c:79
      #5  0x00007b510802881b in __assert_fail_base (fmt=0x7b51081d01e8 "%s%s%s:%u: %s%sAssertion `%s' failed.\n%n", assertion=assertion@entry=0x594a4bbbe30f "rights.allow_bits() == merged->cols", file=file@entry=0x594a4bbbbc9d "/test/mtest/MDEV-14443/MDEV-14443_dbg/sql/sql_acl.cc", line=line@entry=8319, function=function@entry=0x594a4bbbe333 "int update_role_columns(GRANT_TABLE *, GRANT_TABLE **, GRANT_TABLE **)") at ./assert/assert.c:96
      #6  0x00007b510803b517 in __assert_fail (assertion=0x594a4bbbe30f "rights.allow_bits() == merged->cols", file=0x594a4bbbbc9d "/test/mtest/MDEV-14443/MDEV-14443_dbg/sql/sql_acl.cc", line=8319, function=0x594a4bbbe333 "int update_role_columns(GRANT_TABLE *, GRANT_TABLE **, GRANT_TABLE **)") at ./assert/assert.c:105
      #7  0x0000594a4a984f0f in update_role_columns (merged=0x594a602d09a0, cur=0x7b4d1c29af68, last=0x7b4d1c29af68)at /test/mtest/MDEV-14443/MDEV-14443_dbg/sql/sql_acl.cc:8319
      #8  0x0000594a4a984afa in update_role_table_columns (merged=0x594a602d09a0, first=0x7b4d1c29af60, last=0x7b4d1c29af68, privs=@0x7b5106781868: {m_allow_bits = NO_ACL, m_deny_bits = NO_ACL, m_deny_subtree = SELECT_ACL}, cols=SELECT_ACL, role=0x594a601d2ef0 "rA")at /test/mtest/MDEV-14443/MDEV-14443_dbg/sql/sql_acl.cc:8382
      #9  0x0000594a4a983e95 in merge_role_table_and_column_privileges (grantee=0x594a601d2e20, db=0x7b4d1c017120 "rdb", tname=0x7b4d1c017130 "t", rhash=0x7b5106781948)at /test/mtest/MDEV-14443/MDEV-14443_dbg/sql/sql_acl.cc:8447
      #10 0x0000594a4a98242e in merge_role_privileges (grantee=0x594a601d2e20, context=0x7b5106781a20)at /test/mtest/MDEV-14443/MDEV-14443_dbg/sql/sql_acl.cc:8606
      #11 0x0000594a4a9820cb in merge_one_role_privileges (grantee=0x594a601d2e20, what={what = PRIVS_TO_MERGE::TABLE_COLUMN, db = 0x7b4d1c017120 "rdb", name = 0x7b4d1c017130 "t"})at /test/mtest/MDEV-14443/MDEV-14443_dbg/sql/sql_acl.cc:8630
      #12 0x0000594a4a967beb in propagate_role_grants (role=0x594a601d2e20, what=PRIVS_TO_MERGE::TABLE_COLUMN, db=0x7b4d1c017120 "rdb", name=0x7b4d1c017130 "t")at /test/mtest/MDEV-14443/MDEV-14443_dbg/sql/sql_acl.cc:7816
      #13 0x0000594a4a964b39 in mysql_table_grant (thd=0x7b4d1c000d60, table_list=0x7b4d1c0171f0, user_list=@0x7b4d1c006268: {<base_list> = {<Sql_alloc> = {<No data fields>}, first = 0x7b4d1c0171d0, last = 0x7b4d1c0171d0, elements = 1}, <No data fields>}, columns=@0x7b4d1c017970: {<base_list> = {<Sql_alloc> = {<No data fields>}, first = 0x7b4d1c017110, last = 0x7b4d1c017110, elements = 1}, <No data fields>}, rights=NO_ACL, revoke_grant=false, is_deny=true)at /test/mtest/MDEV-14443/MDEV-14443_dbg/sql/sql_acl.cc:8921
      #14 0x0000594a4a978095 in Sql_cmd_grant_table::execute_exact_table (this=0x7b4d1c017950, thd=0x7b4d1c000d60, table=0x7b4d1c0171f0)at /test/mtest/MDEV-14443/MDEV-14443_dbg/sql/sql_acl.cc:14339
      #15 0x0000594a4a97875c in Sql_cmd_grant_table::execute (this=0x7b4d1c017950, thd=0x7b4d1c000d60)at /test/mtest/MDEV-14443/MDEV-14443_dbg/sql/sql_acl.cc:14421
      #16 0x0000594a4aa81d67 in mysql_execute_command (thd=0x7b4d1c000d60, is_called_from_prepared_stmt=false)at /test/mtest/MDEV-14443/MDEV-14443_dbg/sql/sql_parse.cc:5905
      #17 0x0000594a4aa70ec4 in mysql_parse (thd=0x7b4d1c000d60, rawbuf=0x7b4d1c016f90 "DENY SELECT (c2) ON rdb.t TO rA", length=31, parser_state=0x7b51067839c0)at /test/mtest/MDEV-14443/MDEV-14443_dbg/sql/sql_parse.cc:7959
      #18 0x0000594a4aa6e1ed in dispatch_command (command=COM_QUERY, thd=0x7b4d1c000d60, packet=0x7b4d1c1cb721 "DENY SELECT (c2) ON rdb.t TO rA", packet_length=31, blocking=true)at /test/mtest/MDEV-14443/MDEV-14443_dbg/sql/sql_parse.cc:1903
      #19 0x0000594a4aa71a73 in do_command (thd=0x7b4d1c000d60, blocking=true)at /test/mtest/MDEV-14443/MDEV-14443_dbg/sql/sql_parse.cc:1437
      #20 0x0000594a4ac70489 in do_handle_one_connection (connect=0x594a60250bc0, put_in_cache=true)at /test/mtest/MDEV-14443/MDEV-14443_dbg/sql/sql_connect.cc:1503
      #21 0x0000594a4ac7022e in handle_one_connection (arg=0x594a601cddc0)at /test/mtest/MDEV-14443/MDEV-14443_dbg/sql/sql_connect.cc:1415
      #22 0x00007b510809caa4 in start_thread (arg=<optimized out>)at ./nptl/pthread_create.c:447
      #23 0x00007b5108129c6c in clone3 ()at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:78
      

      Attachments

        Issue Links

          Activity

            People

              wlad Vladislav Vaintroub
              ramesh Ramesh Sivaraman
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

                Created:
                Updated:

                Git Integration

                  Error rendering 'com.xiplink.jira.git.jira_git_plugin:git-issue-webpanel'. Please contact your Jira administrators.