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

inconsistent check_access()

    XMLWordPrintable

Details

    • Bug
    • Status: Open (View Workflow)
    • Major
    • Resolution: Unresolved
    • 10.0.4, 5.1.67, 5.2.14, 5.3.12, 5.5.33a
    • 10.6
    • None
    • None

    Description

      The check_access() function retrieves privileges like that

              db_access= acl_get(sctx->host, sctx->ip, sctx->priv_user, db,
                                 db_is_pattern);

      Note that it is using sctx->host and sctx->priv_user pair. This is wrong, they belong to different values — the first is the host part in the USER(), the second is the user part in CURRENT_USER().

      See the following test case:

      create user c@localhost;
      create user c@'%';
      grant select on mysql.* to c@'%';
      connect (c,localhost,c,,,,,);
      select user(), current_user();
      select user from mysql.user group by user;
      disconnect c;
      connection default;
      drop user c@'%';
      drop user c@localhost;

      Note that SELECT is allowed, while it is granted to c@%, and we're connected as c@localhost. Which suggests wildcard matching for the purpose of privilege checking. On the other hand, if the test case above is modified as

      create user ''@localhost;
      create user c@'%';
      grant select on mysql.* to c@'%';
      connect (c,localhost,c,,,,,);
      select user(), current_user();
      --error ER_TABLEACCESS_DENIED_ERROR
      select user from mysql.user group by user;
      disconnect c;
      connection default;
      drop user c@'%';
      drop user ''@localhost;

      then the SELECT will fail. De facto, wildcard matching works for host names, but not for user names. Which is inconsistent.

      Note: if this is to be fixed, all privilege checks should be analyzed and probably changed, including the one for SET ROLE

      Attachments

        Issue Links

          Activity

            People

              serg Sergei Golubchik
              serg Sergei Golubchik
              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.