Commit 5d023fa5 authored by unknown's avatar unknown

Fix possible race. Use LOCK_grant on access to grant_version.


sql/sql_acl.cc:
  Use LOCK_grant on access to grant_version.
parent afe2520e
...@@ -6009,20 +6009,21 @@ void fill_effective_table_privileges(THD *thd, GRANT_INFO *grant, ...@@ -6009,20 +6009,21 @@ void fill_effective_table_privileges(THD *thd, GRANT_INFO *grant,
} }
/* table privileges */ /* table privileges */
rw_rdlock(&LOCK_grant);
if (grant->version != grant_version) if (grant->version != grant_version)
{ {
rw_rdlock(&LOCK_grant);
grant->grant_table= grant->grant_table=
table_hash_search(sctx->host, sctx->ip, db, table_hash_search(sctx->host, sctx->ip, db,
sctx->priv_user, sctx->priv_user,
table, 0); /* purecov: inspected */ table, 0); /* purecov: inspected */
grant->version= grant_version; /* purecov: inspected */ grant->version= grant_version; /* purecov: inspected */
rw_unlock(&LOCK_grant);
} }
if (grant->grant_table != 0) if (grant->grant_table != 0)
{ {
grant->privilege|= grant->grant_table->privs; grant->privilege|= grant->grant_table->privs;
} }
rw_unlock(&LOCK_grant);
DBUG_PRINT("info", ("privilege 0x%lx", grant->privilege)); DBUG_PRINT("info", ("privilege 0x%lx", grant->privilege));
DBUG_VOID_RETURN; DBUG_VOID_RETURN;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment