An error occurred fetching the project authors.
  1. 06 Dec, 2018 1 commit
  2. 04 Sep, 2018 1 commit
  3. 10 May, 2018 1 commit
    • Arun Kuruvila's avatar
      Bug#27230925: HANDLE_FATAL_SIGNAL (SIG=11) IN · 6d570d72
      Arun Kuruvila authored
                    SHOW_ROUTINE_GRANTS
      
      
      Description :- Server crashes in show_routine_grants().
      
      Analysis :- When "grant_reload_procs_priv" encounters
      an error, the grant structures (structures with column,
      function and procedure privileges) are freed. Server
      crashes when trying to access these structures later.
      
      Fix :- Grant structures are retained even when
      "grant_reload_procs_priv()" encounters an error while
      reloading column, function and procedure privileges.
      6d570d72
  4. 30 Apr, 2018 1 commit
  5. 24 Apr, 2018 1 commit
    • Arun Kuruvila's avatar
      Bug#27407480: AUTOMATIC_SP_PRIVILEGES REQUIRES NEED THE · a08508ab
      Arun Kuruvila authored
                    INSERT PRIVILEGES FOR MYSQL.USER TABLE
      
      Description:- Incorrect granting of EXECUTE and ALTER
      ROUTINE privileges when the 'automatic_sp_privileges'
      variable is set.
      
      Fix:- EXECUTE and ALTER ROUTINE privileges are correctly
      granted to the creator of the procedure when the
      'automatic_sp_privileges' is SET.
      a08508ab
  6. 21 Dec, 2017 1 commit
    • Vicențiu Ciorbaru's avatar
      Follow up to MDEV-12366: FLUSH privileges can break hierarchy of roles · 24efee91
      Vicențiu Ciorbaru authored
      A suggestion to make role propagation simpler from serg@mariadb.org.
      
      Instead of gathering the leaf roles in an array, which for very wide
      graphs could potentially mean a big part of the whole roles schema, keep
      the previous logic. When finally merging a role, set its counter
      to something positive.
      
      This will effectively mean that a role has been merged, thus a random pass
      through roles hash that touches a previously merged role won't cause the problem
      described in MDEV-12366 any more, as propagate_role_grants_action will stop
      attempting to merge from that role.
      24efee91
  7. 19 Dec, 2017 2 commits
    • Vicențiu Ciorbaru's avatar
      MDEV-12366: FLUSH PRIVILEGES can break hierarchy of roles · be758322
      Vicențiu Ciorbaru authored
      Whenever we call merge_role_privileges on a role, we make use of
      the role->counter variable to check if all it's children have had their
      privileges merged. Only if all children have had their privileges merged,
      do we update the privileges on parent. This is done to prevent extra work.
      The same idea is employed during flush privileges. You only begin merging
      from "leaf" roles. The recursive calls will merge their parents at some point.
      A problem arises when we try to "re-merge" a parent. Take the following graph:
      
      {noformat}
           A (0)  ----  C (2) ---- D (2)  ---- USER
                       /          /
           B (0)  ----/          /
                                /
           E (0) --------------/
      {noformat}
      
      In parentheses we have the "counter" value right before we start to iterate
      through the roles hash and propagate values. It represents the number of roles
      granted to the current role. The order in which we iterate through the roles
      hash is alphabetical.
      
      * First merge A, which leads to decreasing the counter for C to 1. Since C is
      not 0, we don't proceed with merging into C.
      
      * Second we merge B, which leads to decreasing the counter for C to 0. Now
      we proceed with merging into C. This leads to reducing the counter for D to 1
      as part of C merge process.
      
      * Third as we iterate through the hash, we see that C has counter 0, thus we
      start the merge process *again*. This leads to reducing the counter for
      D to 0! We then attempt to merge D.
      
      * Fourth we start merging E. When E sees D as it's parent (according to the code)
      it attempts to reduce D's counter, which leads to overflow. Now D's counter is
      a very large number, thus E's privileges are not forwarded to D yet.
      
      To correct this behavior we must make sure to only start merging from initial
      leaf nodes.
      be758322
    • Vicențiu Ciorbaru's avatar
      MDEV-13655: Set role does not properly grant privileges. · 2fced9e7
      Vicențiu Ciorbaru authored
      When granting a role to another role, DB privileges get propagated. If
      the grantee had no previous DB privileges, an extra ACL_DB entry is created to
      house those "indirectly received" privileges. If, afterwards, DB
      privileges are granted to the grantee directly, we must make sure to not
      create a duplicate ACL_DB entry.
      2fced9e7
  8. 05 Dec, 2017 1 commit
    • Karthik Kamath's avatar
      BUG#26881798: SERVER EXITS WHEN PRIMARY KEY IN MYSQL.PROC · 9e1035c6
      Karthik Kamath authored
                    IS DROPPED
      
      ANALYSIS:
      =========
      It is advised not to tamper with the system tables.
      When primary key is dropped from a system table, certain
      operations on the table which tries to access the table key
      information may lead to server exit.
      
      FIX:
      ====
      An appropriate error is now reported in such a case.
      9e1035c6
  9. 17 Oct, 2017 1 commit
  10. 11 Oct, 2017 1 commit
    • Vicențiu Ciorbaru's avatar
      MDEV-13676: Field "create Procedure" is NULL, even if the the user has role... · b9418ed3
      Vicențiu Ciorbaru authored
      MDEV-13676: Field "create Procedure" is NULL, even if the the user has role which is the definer. (SHOW CREATE PROCEDURE)
      
      During show create procedure we ommited to check the current role, if it
      is the actual definer of the procedure. In addition, we should support
      indirectly granted roles to the current role. Implemented a recursive
      lookup to search the tree of grants if the rolename is present.
      
      SQL Standard 2016, Part 5 Section 53 View I_S.ROUTINES selects
      ROUTINE_BODY and its WHERE clause says that the GRANTEE must be
      either PUBLIC, or CURRENT_USER or in the ENABLED_ROLES.
      b9418ed3
  11. 15 May, 2017 1 commit
  12. 27 Feb, 2017 1 commit
    • Sergei Golubchik's avatar
      MDEV-5999 MySQL Bug#12766319 - 61865: RENAME USER DOES NOT WORK CORRECTLY -... · 199f88cb
      Sergei Golubchik authored
      MDEV-5999 MySQL Bug#12766319 - 61865: RENAME USER DOES NOT WORK CORRECTLY - REQUIRES FLUSH PRIVILEGES
      
      use update_hostname() to update the hostname.
      test case comes from
      
        commit 0abdeed1d6d
        Author: gopal.shankar@oracle.com <>
        Date:   Thu Mar 29 00:20:54 2012 +0530
      
          Bug#12766319 - 61865: RENAME USER DOES NOT WORK CORRECTLY -
                                REQUIRES FLUSH PRIVILEGES
      199f88cb
  13. 01 Dec, 2016 1 commit
    • Vicențiu Ciorbaru's avatar
      MDEV-10744: Roles are not fully case sensitive · e99990c6
      Vicențiu Ciorbaru authored
      Due to the collation used on the roles_mapping_hash, key comparison
      would work in a case-insensitive manner. This is incorrect from the
      roles mapping perspective. Make use of a case-sensitive collation for that hash,
      the same one used for the acl_roles hash.
      e99990c6
  14. 28 Nov, 2016 1 commit
  15. 29 Aug, 2016 1 commit
  16. 22 Jun, 2016 1 commit
  17. 24 Apr, 2016 1 commit
  18. 21 Apr, 2016 1 commit
  19. 19 Apr, 2016 1 commit
  20. 04 Mar, 2016 1 commit
  21. 23 Feb, 2016 1 commit
  22. 19 Dec, 2015 1 commit
  23. 22 Oct, 2015 2 commits
  24. 14 Oct, 2015 1 commit
    • Arun Kuruvila's avatar
      Bug #21602056 : CONCURRENT FLUSH PRIVILEGES + REVOKE/GRANT · 3846b085
      Arun Kuruvila authored
                      CRASHES IN WILD_CASE_COMPARE!
      
      Description:- Executing FLUSH PRIVILEGES and REVOKE/
      GRANT concurrently crashes the server.
      
      Analysis:- Concurrent FLUSH PRIVILEGES and REVOKE/GRANT
      might trigger a small time frame in which REVOKE/GRANT
      fetches the "acl_proxy_user" information as a part of
      "acl_check_proxy_grant_access()". Meanwhile FLUSH PRIVILEGES
      deletes the old acl structures as a part of "acl_reload()".
      After which REVOKE/GRANT tries to access the hostname in
      "wild_case_compare()" which leads to a crash because of the
      invalid memory access.
      
      Fix:- Mutex lock on "acl_cache" is acquired before fetching
      "acl_proxy_user" information in
      "acl_check_proxy_grant_access()".
      3846b085
  25. 13 Jul, 2015 1 commit
    • Sreeharsha Ramanavarapu's avatar
      Bug #20777016: DELETE CHECKS PRIVILEGES ON THE WRONG · 6fb2cdbc
      Sreeharsha Ramanavarapu authored
                     DATABASE WHEN USING TABLE ALIASES
      
      Issue:
      -----
      When using table aliases for deleting, MySQL checks
      privileges against the current database and not the
      privileges on the actual table or database the table
      resides.
      
      
      SOLUTION:
      ---------
      While checking privileges for multi-deletes,
      correspondent_table should be used since it points to the
      correct table and database.
      6fb2cdbc
  26. 05 May, 2015 1 commit
  27. 03 May, 2015 1 commit
  28. 28 Apr, 2015 1 commit
    • Arun Kuruvila's avatar
      Bug #20181776 :- ACCESS CONTROL DOESN'T MATCH MOST SPECIFIC · fdae90dd
      Arun Kuruvila authored
                       HOST WHEN IT CONTAINS WILDCARD
      
      Description :- Incorrect access privileges are provided to a
      user due to wrong sorting of users when wildcard characters
      is present in the hostname.
      
      Analysis :- Function "get_sorts()" is used to sort the
      strings of user name, hostname, database name. It is used
      to arrange the users in the access privilege matching order.
      When a user connects, it checks in the sorted user access
      privilege list and finds a corresponding matching entry for
      the user. Algorithm used in "get_sort()" sorts the strings
      inappropriately. As a result, when a user connects to the
      server, it is mapped to incorrect user access privileges.
      Algorithm used in "get_sort()" counts the number of
      characters before the first occurence of any one of the
      wildcard characters (single-wildcard character '_' or
      multi-wildcard character '%') and sorts in that order.
      As a result of inconnect sorting it treats hostname "%" and
      "%.mysql.com" as equally-specific values and therefore
      the order is indeterminate.
      
      Fix:- The "get_sort()" algorithm has been modified to treat
      "%" seperately. Now "get_sort()" returns a number which, if
      sorted in descending order, puts strings in the following
      order:-
      * strings with no wildcards
      * strings containg wildcards and non-wildcard characters
      * single muilt-wildcard character('%')
      * empty string.
      fdae90dd
  29. 27 Apr, 2015 1 commit
  30. 17 Feb, 2015 1 commit
  31. 30 Sep, 2014 1 commit
    • Michael Widenius's avatar
      MDEV-5120 Test suite test maria-no-logging fails · 70823e1d
      Michael Widenius authored
      The reason for the failure was a bug in an include file on debian that causes 'struct stat'
      to have different sized depending on the environment.
      
      This patch fixes so that we always include my_global.h or my_config.h before we include any other files.
      
      Other things:
      - Removed #include <my_global.h> in some include files; Better to always do this at the top level to have as few
        "always-include-this-file-first' files as possible.
      - Removed usage of some include files that where already included by my_global.h or by other files.
      
      
      client/mysql_plugin.c:
        Use my_global.h first
      client/mysqlslap.c:
        Remove duplicated include files
      extra/comp_err.c:
        Remove duplicated include files
      include/m_string.h:
        Remove duplicated include files
      include/maria.h:
        Remove duplicated include files
      libmysqld/emb_qcache.cc:
        Use my_global.h first
      plugin/semisync/semisync.h:
        Use my_pthread.h first
      sql/datadict.cc:
        Use my_global.h first
      sql/debug_sync.cc:
        Use my_global.h first
      sql/derror.cc:
        Use my_global.h first
      sql/des_key_file.cc:
        Use my_global.h first
      sql/discover.cc:
        Use my_global.h first
      sql/event_data_objects.cc:
        Use my_global.h first
      sql/event_db_repository.cc:
        Use my_global.h first
      sql/event_parse_data.cc:
        Use my_global.h first
      sql/event_queue.cc:
        Use my_global.h first
      sql/event_scheduler.cc:
        Use my_global.h first
      sql/events.cc:
        Use my_global.h first
      sql/field.cc:
        Use my_global.h first
        Remove duplicated include files
      sql/field_conv.cc:
        Use my_global.h first
      sql/filesort.cc:
        Use my_global.h first
        Remove duplicated include files
      sql/gstream.cc:
        Use my_global.h first
      sql/ha_ndbcluster.cc:
        Use my_global.h first
      sql/ha_ndbcluster_binlog.cc:
        Use my_global.h first
      sql/ha_ndbcluster_cond.cc:
        Use my_global.h first
      sql/ha_partition.cc:
        Use my_global.h first
      sql/handler.cc:
        Use my_global.h first
      sql/hash_filo.cc:
        Use my_global.h first
      sql/hostname.cc:
        Use my_global.h first
      sql/init.cc:
        Use my_global.h first
      sql/item.cc:
        Use my_global.h first
      sql/item_buff.cc:
        Use my_global.h first
      sql/item_cmpfunc.cc:
        Use my_global.h first
      sql/item_create.cc:
        Use my_global.h first
      sql/item_geofunc.cc:
        Use my_global.h first
      sql/item_inetfunc.cc:
        Use my_global.h first
      sql/item_row.cc:
        Use my_global.h first
      sql/item_strfunc.cc:
        Use my_global.h first
      sql/item_subselect.cc:
        Use my_global.h first
      sql/item_sum.cc:
        Use my_global.h first
      sql/item_timefunc.cc:
        Use my_global.h first
      sql/item_xmlfunc.cc:
        Use my_global.h first
      sql/key.cc:
        Use my_global.h first
      sql/lock.cc:
        Use my_global.h first
      sql/log.cc:
        Use my_global.h first
      sql/log_event.cc:
        Use my_global.h first
      sql/log_event_old.cc:
        Use my_global.h first
      sql/mf_iocache.cc:
        Use my_global.h first
      sql/mysql_install_db.cc:
        Remove duplicated include files
      sql/mysqld.cc:
        Remove duplicated include files
      sql/net_serv.cc:
        Remove duplicated include files
      sql/opt_range.cc:
        Use my_global.h first
      sql/opt_subselect.cc:
        Use my_global.h first
      sql/opt_sum.cc:
        Use my_global.h first
      sql/parse_file.cc:
        Use my_global.h first
      sql/partition_info.cc:
        Use my_global.h first
      sql/procedure.cc:
        Use my_global.h first
      sql/protocol.cc:
        Use my_global.h first
      sql/records.cc:
        Use my_global.h first
      sql/records.h:
        Don't include my_global.h
        Better to do this at the upper level
      sql/repl_failsafe.cc:
        Use my_global.h first
      sql/rpl_filter.cc:
        Use my_global.h first
      sql/rpl_gtid.cc:
        Use my_global.h first
      sql/rpl_handler.cc:
        Use my_global.h first
      sql/rpl_injector.cc:
        Use my_global.h first
      sql/rpl_record.cc:
        Use my_global.h first
      sql/rpl_record_old.cc:
        Use my_global.h first
      sql/rpl_reporting.cc:
        Use my_global.h first
      sql/rpl_rli.cc:
        Use my_global.h first
      sql/rpl_tblmap.cc:
        Use my_global.h first
      sql/rpl_utility.cc:
        Use my_global.h first
      sql/set_var.cc:
        Added comment
      sql/slave.cc:
        Use my_global.h first
      sql/sp.cc:
        Use my_global.h first
      sql/sp_cache.cc:
        Use my_global.h first
      sql/sp_head.cc:
        Use my_global.h first
      sql/sp_pcontext.cc:
        Use my_global.h first
      sql/sp_rcontext.cc:
        Use my_global.h first
      sql/spatial.cc:
        Use my_global.h first
      sql/sql_acl.cc:
        Use my_global.h first
      sql/sql_admin.cc:
        Use my_global.h first
      sql/sql_analyse.cc:
        Use my_global.h first
      sql/sql_audit.cc:
        Use my_global.h first
      sql/sql_base.cc:
        Use my_global.h first
      sql/sql_binlog.cc:
        Use my_global.h first
      sql/sql_bootstrap.cc:
        Use my_global.h first
        Use my_global.h first
      sql/sql_cache.cc:
        Use my_global.h first
      sql/sql_class.cc:
        Use my_global.h first
      sql/sql_client.cc:
        Use my_global.h first
      sql/sql_connect.cc:
        Use my_global.h first
      sql/sql_crypt.cc:
        Use my_global.h first
      sql/sql_cursor.cc:
        Use my_global.h first
      sql/sql_db.cc:
        Use my_global.h first
      sql/sql_delete.cc:
        Use my_global.h first
      sql/sql_derived.cc:
        Use my_global.h first
      sql/sql_do.cc:
        Use my_global.h first
      sql/sql_error.cc:
        Use my_global.h first
      sql/sql_explain.cc:
        Use my_global.h first
      sql/sql_expression_cache.cc:
        Use my_global.h first
      sql/sql_handler.cc:
        Use my_global.h first
      sql/sql_help.cc:
        Use my_global.h first
      sql/sql_insert.cc:
        Use my_global.h first
      sql/sql_lex.cc:
        Use my_global.h first
      sql/sql_load.cc:
        Use my_global.h first
      sql/sql_locale.cc:
        Use my_global.h first
      sql/sql_manager.cc:
        Use my_global.h first
      sql/sql_parse.cc:
        Use my_global.h first
      sql/sql_partition.cc:
        Use my_global.h first
      sql/sql_plugin.cc:
        Added comment
      sql/sql_prepare.cc:
        Use my_global.h first
      sql/sql_priv.h:
        Added error if we use this before including my_global.h
        This check is here becasue so many files includes sql_priv.h first.
      sql/sql_profile.cc:
        Use my_global.h first
      sql/sql_reload.cc:
        Use my_global.h first
      sql/sql_rename.cc:
        Use my_global.h first
      sql/sql_repl.cc:
        Use my_global.h first
      sql/sql_select.cc:
        Use my_global.h first
      sql/sql_servers.cc:
        Use my_global.h first
      sql/sql_show.cc:
        Added comment
      sql/sql_signal.cc:
        Use my_global.h first
      sql/sql_statistics.cc:
        Use my_global.h first
      sql/sql_table.cc:
        Use my_global.h first
      sql/sql_tablespace.cc:
        Use my_global.h first
      sql/sql_test.cc:
        Use my_global.h first
      sql/sql_time.cc:
        Use my_global.h first
      sql/sql_trigger.cc:
        Use my_global.h first
      sql/sql_udf.cc:
        Use my_global.h first
      sql/sql_union.cc:
        Use my_global.h first
      sql/sql_update.cc:
        Use my_global.h first
      sql/sql_view.cc:
        Use my_global.h first
      sql/sys_vars.cc:
        Added comment
      sql/table.cc:
        Use my_global.h first
      sql/thr_malloc.cc:
        Use my_global.h first
      sql/transaction.cc:
        Use my_global.h first
      sql/uniques.cc:
        Use my_global.h first
      sql/unireg.cc:
        Use my_global.h first
      sql/unireg.h:
        Removed inclusion of my_global.h
      storage/archive/ha_archive.cc:
        Added comment
      storage/blackhole/ha_blackhole.cc:
        Use my_global.h first
      storage/csv/ha_tina.cc:
        Use my_global.h first
      storage/csv/transparent_file.cc:
        Use my_global.h first
      storage/federated/ha_federated.cc:
        Use my_global.h first
      storage/federatedx/federatedx_io.cc:
        Use my_global.h first
      storage/federatedx/federatedx_io_mysql.cc:
        Use my_global.h first
      storage/federatedx/federatedx_io_null.cc:
        Use my_global.h first
      storage/federatedx/federatedx_txn.cc:
        Use my_global.h first
      storage/heap/ha_heap.cc:
        Use my_global.h first
      storage/innobase/handler/handler0alter.cc:
        Use my_global.h first
      storage/maria/ha_maria.cc:
        Use my_global.h first
      storage/maria/unittest/ma_maria_log_cleanup.c:
        Remove duplicated include files
      storage/maria/unittest/test_file.c:
        Added comment
      storage/myisam/ha_myisam.cc:
        Move sql_plugin.h first as this includes my_global.h
      storage/myisammrg/ha_myisammrg.cc:
        Use my_global.h first
      storage/oqgraph/oqgraph_thunk.cc:
        Use my_config.h and my_global.h first
        One could not include my_global.h before oqgraph_thunk.h (don't know why)
      storage/spider/ha_spider.cc:
        Use my_global.h first
      storage/spider/hs_client/config.cpp:
        Use my_global.h first
      storage/spider/hs_client/escape.cpp:
        Use my_global.h first
      storage/spider/hs_client/fatal.cpp:
        Use my_global.h first
      storage/spider/hs_client/hstcpcli.cpp:
        Use my_global.h first
      storage/spider/hs_client/socket.cpp:
        Use my_global.h first
      storage/spider/hs_client/string_util.cpp:
        Use my_global.h first
      storage/spider/spd_conn.cc:
        Use my_global.h first
      storage/spider/spd_copy_tables.cc:
        Use my_global.h first
      storage/spider/spd_db_conn.cc:
        Use my_global.h first
      storage/spider/spd_db_handlersocket.cc:
        Use my_global.h first
      storage/spider/spd_db_mysql.cc:
        Use my_global.h first
      storage/spider/spd_db_oracle.cc:
        Use my_global.h first
      storage/spider/spd_direct_sql.cc:
        Use my_global.h first
      storage/spider/spd_i_s.cc:
        Use my_global.h first
      storage/spider/spd_malloc.cc:
        Use my_global.h first
      storage/spider/spd_param.cc:
        Use my_global.h first
      storage/spider/spd_ping_table.cc:
        Use my_global.h first
      storage/spider/spd_sys_table.cc:
        Use my_global.h first
      storage/spider/spd_table.cc:
        Use my_global.h first
      storage/spider/spd_trx.cc:
        Use my_global.h first
      storage/xtradb/handler/handler0alter.cc:
        Use my_global.h first
      storage/xtradb/handler/i_s.cc:
        Use my_global.h first
      70823e1d
  32. 25 Sep, 2014 2 commits
  33. 18 Sep, 2014 1 commit
    • Sergey Vojtovich's avatar
      MDEV-6749 - Deadlock between GRANT/REVOKE, SELECT FROM I_S.COLUMNS, · d1e46a50
      Sergey Vojtovich authored
                  SET slow_query_log and failed connection attempt
      
      A very subtle though valid deadlock. Deadlock chain:
      wrlock(LOCK_grant)    -> lock(acl_cache->lock) GRANT/REVOKE CREATE/DROP USER
      lock(LOCK_open)       -> rdlock(LOCK_grant)    SELECT * FROM I_S.COLUMNS
      wrlock(LOCK_logger)   -> lock(LOCK_open)       SET @@global.slow_query_log='ON'
      lock(acl_cache->lock) -> rdlock(LOCK_logger)   Failed connection
      
      Fixed by removing relationship between acl_cache->lock and LOCK_logger
      during failed connection attempt.
      d1e46a50
  34. 17 Sep, 2014 1 commit
    • Sergei Golubchik's avatar
      fixes for valgrind failures · c338772a
      Sergei Golubchik authored
      sql/item.cc:
        don't forget to adjust the length of the string when removing leading spaces
      sql/sql_acl.cc:
        when updating the hostname of the ACL_USER, update the hostname_length too
      sql/sql_parse.cc:
        first compare the username string, then test the host pointer
        (host pointer is undefined when the username string is one of the hard-coded values
        set by the parser). This is not a bug, old code is perfectly safe as the undefined
        host pointer is never dereferenced, but let's keep valgrind happy.
      c338772a
  35. 03 Sep, 2014 1 commit
  36. 30 Jun, 2014 2 commits