Skip to content

Commit c35d584

Browse files
Omar Sharieffdahlerlend
authored andcommitted
Bug#33966181 : JSON audit log has misleading "sql_command": "error" for
prepared statements Description: Running server commands (\u / use, \s) or calling C API functions (mysql_refresh, mysql_stat, mysql_dump_debug_info, mysql_ping, mysql_set_server_option, mysql_list_processes, mysql_reset_connection) can lead to an error being indicated in the audit log even when there is no error. Fix: A check that prevents logging an error while running / calling valid server commands and C API functions. Change-Id: I8adccd30b749847559b49fc1e2bd48c5606ac311
1 parent d806c10 commit c35d584

File tree

2 files changed

+17
-4
lines changed

2 files changed

+17
-4
lines changed

sql/server_component/mysql_server_event_tracking_bridge_imp.cc

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1024,8 +1024,16 @@ DEFINE_BOOL_METHOD(Event_general_bridge_implementation::notify,
10241024
TO_LEXCSTRING(event_information->external_user_);
10251025
plugin_data.general_rows =
10261026
static_cast<unsigned long long>(event_information->rows_);
1027-
plugin_data.general_sql_command =
1028-
sql_statement_names[thd->lex->sql_command];
1027+
1028+
if (event_information->command_.str != nullptr &&
1029+
thd->lex->sql_command == SQLCOM_END &&
1030+
thd->get_command() != COM_QUERY) {
1031+
plugin_data.general_sql_command = {STRING_WITH_LEN("")};
1032+
} else {
1033+
plugin_data.general_sql_command =
1034+
sql_statement_names[thd->lex->sql_command];
1035+
}
1036+
10291037
plugin_data.general_charset = const_cast<CHARSET_INFO *>(
10301038
thd_get_audit_query(thd, &plugin_data.general_query));
10311039
plugin_data.general_time =

sql/server_component/mysql_thd_attributes_imp.cc

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -120,8 +120,13 @@ DEFINE_BOOL_METHOD(mysql_thd_attributes_imp::get,
120120
*((mysql_cstring_with_length *)inout_pvalue) = val;
121121
} else if (!strcmp(name, "sql_command")) {
122122
const char *sql_command = get_sql_command_string(t->lex->sql_command);
123-
*((mysql_cstring_with_length *)inout_pvalue) = {sql_command,
124-
strlen(sql_command)};
123+
if (t->lex->sql_command == SQLCOM_END &&
124+
t->get_command() != COM_QUERY) {
125+
*((mysql_cstring_with_length *)inout_pvalue) = {"", strlen("")};
126+
} else {
127+
*((mysql_cstring_with_length *)inout_pvalue) = {sql_command,
128+
strlen(sql_command)};
129+
}
125130
} else if (!strcmp(name, "command")) {
126131
const char *command = get_server_command_string(t->get_command());
127132
*((mysql_cstring_with_length *)inout_pvalue) = {command,

0 commit comments

Comments
 (0)