summaryrefslogtreecommitdiff
path: root/sql/sql_acl.cc
diff options
context:
space:
mode:
authorunknown <kroki@mysql.com>2006-05-15 11:56:02 +0400
committerunknown <kroki@mysql.com>2006-05-15 11:56:02 +0400
commit5d023fa574310acf5025893035d6e74944207f35 (patch)
tree22db169273f233ce23d5c48c289ceabe9c541f24 /sql/sql_acl.cc
parentafe2520ecfca0f3dac5280cb7b978af28dbc1097 (diff)
downloadmariadb-git-5d023fa574310acf5025893035d6e74944207f35.tar.gz
Fix possible race. Use LOCK_grant on access to grant_version.
sql/sql_acl.cc: Use LOCK_grant on access to grant_version.
Diffstat (limited to 'sql/sql_acl.cc')
-rw-r--r--sql/sql_acl.cc5
1 files changed, 3 insertions, 2 deletions
diff --git a/sql/sql_acl.cc b/sql/sql_acl.cc
index d66a631dbcc..a4d46244ad4 100644
--- a/sql/sql_acl.cc
+++ b/sql/sql_acl.cc
@@ -6009,20 +6009,21 @@ void fill_effective_table_privileges(THD *thd, GRANT_INFO *grant,
}
/* table privileges */
+ rw_rdlock(&LOCK_grant);
if (grant->version != grant_version)
{
- rw_rdlock(&LOCK_grant);
grant->grant_table=
table_hash_search(sctx->host, sctx->ip, db,
sctx->priv_user,
table, 0); /* purecov: inspected */
grant->version= grant_version; /* purecov: inspected */
- rw_unlock(&LOCK_grant);
}
if (grant->grant_table != 0)
{
grant->privilege|= grant->grant_table->privs;
}
+ rw_unlock(&LOCK_grant);
+
DBUG_PRINT("info", ("privilege 0x%lx", grant->privilege));
DBUG_VOID_RETURN;
}