diff options
author | Sergei Golubchik <sergii@pisem.net> | 2012-11-08 14:17:53 +0100 |
---|---|---|
committer | Sergei Golubchik <sergii@pisem.net> | 2012-11-08 14:17:53 +0100 |
commit | d473199744812ee4af52edfa4b85610d834802ca (patch) | |
tree | 4eb122ccc0eded04d80889d9e8d6d3e1980212b7 /sql | |
parent | 06365bf841eab74a1cb4b17e836ff0c372a0dd79 (diff) | |
download | mariadb-git-d473199744812ee4af52edfa4b85610d834802ca.tar.gz |
MDEV-258 audit plugin only see queries if general log is enabled
Diffstat (limited to 'sql')
-rw-r--r-- | sql/log.cc | 30 | ||||
-rw-r--r-- | sql/sql_audit.h | 13 |
2 files changed, 21 insertions, 22 deletions
diff --git a/sql/log.cc b/sql/log.cc index effe0e36705..b583c6dfac4 100644 --- a/sql/log.cc +++ b/sql/log.cc @@ -1279,12 +1279,6 @@ bool LOGGER::general_log_write(THD *thd, enum enum_server_command command, DBUG_ASSERT(thd); - lock_shared(); - if (!opt_log) - { - unlock(); - return 0; - } user_host_len= make_user_name(thd, user_host_buff); current_time= my_hrtime(); @@ -1295,15 +1289,19 @@ bool LOGGER::general_log_write(THD *thd, enum enum_server_command command, command_name[(uint) command].length, query, query_length); - while (*current_handler) - error|= (*current_handler++)-> - log_general(thd, current_time, user_host_buff, - user_host_len, thd->thread_id, - command_name[(uint) command].str, - command_name[(uint) command].length, - query, query_length, - thd->variables.character_set_client) || error; - unlock(); + if (opt_log && log_command(thd, command)) + { + lock_shared(); + while (*current_handler) + error|= (*current_handler++)-> + log_general(thd, current_time, user_host_buff, + user_host_len, thd->thread_id, + command_name[(uint) command].str, + command_name[(uint) command].length, + query, query_length, + thd->variables.character_set_client) || error; + unlock(); + } return error; } @@ -5333,7 +5331,7 @@ bool general_log_write(THD *thd, enum enum_server_command command, const char *query, uint query_length) { /* Write the message to the log if we want to log this king of commands */ - if (logger.log_command(thd, command)) + if (logger.log_command(thd, command) || mysql_audit_general_enabled()) return logger.general_log_write(thd, command, query, query_length); return FALSE; diff --git a/sql/sql_audit.h b/sql/sql_audit.h index 51c695d091d..02a63852955 100644 --- a/sql/sql_audit.h +++ b/sql/sql_audit.h @@ -53,6 +53,11 @@ static inline uint make_user_name(THD *thd, char *buf) sctx->ip ? sctx->ip : "", "]", NullS) - buf; } +static inline bool mysql_audit_general_enabled() +{ + return mysql_global_audit_mask[0] & MYSQL_AUDIT_GENERAL_CLASSMASK; +} + /** Call audit plugins of GENERAL audit class, MYSQL_AUDIT_GENERAL_LOG subtype. @@ -72,8 +77,7 @@ void mysql_audit_general_log(THD *thd, time_t time, const char *cmd, uint cmdlen, const char *query, uint querylen) { -#ifndef EMBEDDED_LIBRARY - if (mysql_global_audit_mask[0] & MYSQL_AUDIT_GENERAL_CLASSMASK) + if (mysql_audit_general_enabled()) { CHARSET_INFO *clientcs= thd ? thd->variables.character_set_client : global_system_variables.character_set_client; @@ -82,7 +86,6 @@ void mysql_audit_general_log(THD *thd, time_t time, 0, time, user, userlen, cmd, cmdlen, query, querylen, clientcs, 0); } -#endif } /** @@ -101,8 +104,7 @@ static inline void mysql_audit_general(THD *thd, uint event_subtype, int error_code, const char *msg) { -#ifndef EMBEDDED_LIBRARY - if (mysql_global_audit_mask[0] & MYSQL_AUDIT_GENERAL_CLASSMASK) + if (mysql_audit_general_enabled()) { time_t time= my_time(0); uint msglen= msg ? strlen(msg) : 0; @@ -130,7 +132,6 @@ void mysql_audit_general(THD *thd, uint event_subtype, error_code, time, user, userlen, msg, msglen, query.str(), query.length(), query.charset(), rows); } -#endif } #define MYSQL_AUDIT_NOTIFY_CONNECTION_CONNECT(thd) mysql_audit_notify(\ |