1
0
mirror of https://github.com/MariaDB/server.git synced 2025-07-30 16:24:05 +03:00

MDEV-22647 Assertion `!check_audit_mask(mysql_global_audit_mask, event_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.
This commit is contained in:
Sergei Golubchik
2022-09-14 19:15:26 +02:00
parent b7928f7566
commit beffef9f00

View File

@ -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);