Skip to content

Commit

Permalink
MDEV-22647 Assertion `!check_audit_mask(mysql_global_audit_mask, even…
Browse files Browse the repository at this point in the history
…t_class_mask)'

check_audit_mask(mysql_global_audit_mask, event_class_mask) is tested in
mysql_audit_general_log() and then assert in mysql_audit_acquire_plugins()
verifies that the condition still holds.
But this code path is not protected by LOCK_audit_mask, so
mysql_global_audit_mask can change its value between the if() and the
assert. That is, the assert is invalid and will fire if the
audit plugin is unloaded concurrently with mysql_audit_general_log().

Nothing bad will happen in this case though, we'll just do a useless
loop over all remaining installed audit plugins.

That is, the fix is simply to remove the assert.
  • Loading branch information
vuvova committed Sep 14, 2022
1 parent b7928f7 commit beffef9
Showing 1 changed file with 0 additions and 2 deletions.
2 changes: 0 additions & 2 deletions sql/sql_audit.cc
Original file line number Diff line number Diff line change
Expand Up @@ -113,8 +113,6 @@ void mysql_audit_acquire_plugins(THD *thd, ulong *event_class_mask)
{
DBUG_ENTER("mysql_audit_acquire_plugins");
DBUG_ASSERT(thd);
DBUG_ASSERT(!check_audit_mask(mysql_global_audit_mask, event_class_mask));

if (check_audit_mask(thd->audit_class_mask, event_class_mask))
{
plugin_foreach(thd, acquire_plugins, MYSQL_AUDIT_PLUGIN, event_class_mask);
Expand Down

0 comments on commit beffef9

Please sign in to comment.