Browse Source

MDEV-35604: SIGSEGV in filter_query_type | log_statement_ex / auditing

Take into account that filter_query_type can get empty query after
skip_set_statement run on incorrect query.
pull/3689/head
Oleksandr Byelkin 10 months ago
committed by Oleksandr Byelkin
parent
commit
694d91da89
  1. 9
      mysql-test/suite/plugins/r/server_audit_pwd_mask.result
  2. 16
      mysql-test/suite/plugins/t/server_audit_pwd_mask.test
  3. 2
      plugin/server_audit/server_audit.c

9
mysql-test/suite/plugins/r/server_audit_pwd_mask.result

@ -30,4 +30,13 @@ DROP USER u2;
set global server_audit_logging=off;
UNINSTALL PLUGIN ed25519;
UNINSTALL PLUGIN server_audit;
#
# MDEV-35604: SIGSEGV in filter_query_type | log_statement_ex / auditing
#
INSTALL PLUGIN server_audit SONAME 'server_audit';
SET GLOBAL server_audit_logging=ON;
SET STATEMENT max_error_count=1 SELECT 1;
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'SELECT 1' at line 1
SET GLOBAL server_audit_logging=OFF;
UNINSTALL SONAME 'server_audit';
# end of 10.5 tests

16
mysql-test/suite/plugins/t/server_audit_pwd_mask.test

@ -56,4 +56,20 @@ UNINSTALL PLUGIN ed25519;
UNINSTALL PLUGIN server_audit;
--enable_warnings
--echo #
--echo # MDEV-35604: SIGSEGV in filter_query_type | log_statement_ex / auditing
--echo #
INSTALL PLUGIN server_audit SONAME 'server_audit';
SET GLOBAL server_audit_logging=ON;
--ERROR ER_PARSE_ERROR
SET STATEMENT max_error_count=1 SELECT 1;
# Cleanup
SET GLOBAL server_audit_logging=OFF;
--disable_warnings
UNINSTALL SONAME 'server_audit';
--enable_warnings
--echo # end of 10.5 tests

2
plugin/server_audit/server_audit.c

@ -1765,6 +1765,8 @@ static int filter_query_type(const char *query, struct sa_keyword *kwd)
char fword[MAX_KEYWORD + 1], nword[MAX_KEYWORD + 1];
int len, nlen= 0;
const struct sa_keyword *l_keywords;
if (!query)
return SQLCOM_NOTHING;
while (*query && (is_space(*query) || *query == '(' || *query == '/'))
{

Loading…
Cancel
Save