diff options
author | unknown <kroki@mysql.com> | 2006-05-15 11:56:02 +0400 |
---|---|---|
committer | unknown <kroki@mysql.com> | 2006-05-15 11:56:02 +0400 |
commit | 5d023fa574310acf5025893035d6e74944207f35 (patch) | |
tree | 22db169273f233ce23d5c48c289ceabe9c541f24 /sql/sql_acl.cc | |
parent | afe2520ecfca0f3dac5280cb7b978af28dbc1097 (diff) | |
download | mariadb-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.cc | 5 |
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; } |