From ed6ad7d359cf933869a28fecd9ce3b811932cbd6 Mon Sep 17 00:00:00 2001 From: "kroki@mysql.com" <> Date: Mon, 15 May 2006 11:56:02 +0400 Subject: [PATCH] Fix possible race. Use LOCK_grant on access to grant_version. --- sql/sql_acl.cc | 5 +++-- 1 file 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; }