From 7c16d6806901560ce9a5e27633911e9285be23d7 Mon Sep 17 00:00:00 2001 From: Arnold Robbins Date: Wed, 27 Jul 2016 13:18:14 +0300 Subject: [PATCH] Add offsets for MySQL 5.6.32. Some whitespace cleanups. --- include/audit_handler.h | 2 +- src/audit_handler.cc | 7 ++++--- src/audit_offsets.cc | 4 ++++ src/audit_plugin.cc | 30 ++++++++++++++++-------------- 4 files changed, 25 insertions(+), 18 deletions(-) diff --git a/include/audit_handler.h b/include/audit_handler.h index e307b6f..9932685 100644 --- a/include/audit_handler.h +++ b/include/audit_handler.h @@ -530,7 +530,7 @@ protected: virtual void handler_stop(); virtual bool handler_start_internal() = 0; virtual void handler_stop_internal() = 0; - virtual bool handler_log_audit(ThdSesData *pThdData) =0; + virtual bool handler_log_audit(ThdSesData *pThdData) = 0; bool m_initialized; bool m_enabled; bool m_failed; diff --git a/src/audit_handler.cc b/src/audit_handler.cc index 127b32a..9168534 100644 --- a/src/audit_handler.cc +++ b/src/audit_handler.cc @@ -26,6 +26,7 @@ #include "static_assert.h" // utility macro to log also with a date as a prefix +// FIXME: This is no longer used. Remove? #define log_with_date(f, ...) do {\ struct tm tm_tmp;\ time_t result = time(NULL);\ @@ -44,7 +45,7 @@ // initialize static stuff ThdOffsets Audit_formatter::thd_offsets = { 0 }; Audit_handler *Audit_handler::m_audit_handler_list[Audit_handler::MAX_AUDIT_HANDLERS_NUM]; -const char *Audit_json_formatter::DEF_MSG_DELIMITER = "\\n"; +const char *Audit_json_formatter::DEF_MSG_DELIMITER = "\\n"; // FIXME: This is used ... #if MYSQL_VERSION_ID < 50709 #define C_STRING_WITH_LEN(X) ((char *) (X)), ((size_t) (sizeof(X) - 1)) @@ -233,7 +234,7 @@ int Audit_file_handler::open(const char *io_dest, bool log_errors) if (res) { sql_print_error( - "%s unable to set bufzie [%zd (%ld)] for file %s: %s.", + "%s unable to set bufsize [%zd (%ld)] for file %s: %s.", AUDIT_LOG_PREFIX, bufsize, m_bufsize, m_io_dest, strerror(errno)); } sql_print_information("%s bufsize for file [%s]: %zd. Value of json_file_bufsize: %ld.", AUDIT_LOG_PREFIX, m_io_dest, @@ -830,7 +831,7 @@ bool ThdSesData::getNextObject(const char **db_name, const char **obj_name, cons case OBJ_QUERY_CACHE: { if (m_index < m_tableInf->num_of_elem && - m_index< MAX_NUM_QUERY_TABLE_ELEM) + m_index < MAX_NUM_QUERY_TABLE_ELEM) { *db_name = m_tableInf->db[m_index]; *obj_name = m_tableInf->table_name[m_index]; diff --git a/src/audit_offsets.cc b/src/audit_offsets.cc index e0be63c..a91ef06 100644 --- a/src/audit_offsets.cc +++ b/src/audit_offsets.cc @@ -22,6 +22,8 @@ const ThdOffsets thd_offsets_arr[] = { /* +++ MYSQL 64 OFFSETS GO HERE +++ */ + //offsets for: /mysqlrpm/5.6.32/usr/sbin/mysqld (5.6.32) + {"5.6.32","e7fb65c8c8c817e58de0a1ce9dcad845", 6992, 7040, 4000, 4520, 72, 2704, 96, 0, 32, 104, 136, 7128}, //offsets for: /mysqlrpm/5.5.50/usr/sbin/mysqld (5.5.50) {"5.5.50","c1b990f432d684f1d5abe3969146ee9d", 6144, 6192, 3816, 4312, 88, 2592, 96, 0, 32, 104, 120, 6264}, //offsets for: /mysqlrpm/5.6.31/usr/sbin/mysqld (5.6.31) @@ -437,6 +439,8 @@ const ThdOffsets thd_offsets_arr[] = const ThdOffsets thd_offsets_arr[] = { /* +++ MYSQL 32 OFFSETS GO HERE +++ */ + //offsets for: /mysqlrpm/5.6.32/usr/sbin/mysqld (5.6.32) + {"5.6.32","f3b529d1a6c2d051f9ee0930004129ab", 4676, 4704, 2660, 3052, 36, 1748, 60, 0, 20, 64, 72, 4776}, //offsets for: /mysqlrpm/5.5.50/usr/sbin/mysqld (5.5.50) {"5.5.50","2adacdba4c475e574dedbf97366159c7", 3872, 3900, 2368, 2748, 44, 1656, 60, 0, 20, 64, 60, 3956}, //offsets for: /mysqlrpm/5.6.31/usr/sbin/mysqld (5.6.31) diff --git a/src/audit_plugin.cc b/src/audit_plugin.cc index d5225a4..427dfa5 100644 --- a/src/audit_plugin.cc +++ b/src/audit_plugin.cc @@ -396,11 +396,11 @@ static int audit_send_result_to_client(Query_cache *pthis, THD *thd, const LEX_ #endif { int res; - void *pList = thd_alloc (thd, sizeof (QueryTableInf)); + void *pList = thd_alloc(thd, sizeof (QueryTableInf)); if (pList) { - memset (pList,0,sizeof (QueryTableInf)); + memset(pList,0,sizeof (QueryTableInf)); THDVAR(thd, query_cache_table_list) =(ulong)pList; } @@ -411,8 +411,8 @@ static int audit_send_result_to_client(Query_cache *pthis, THD *thd, const LEX_ #endif if (res) { - ThdSesData thd_data (thd); - audit (&thd_data); + ThdSesData thd_data(thd); + audit(&thd_data); } THDVAR(thd, query_cache_table_list) = 0; return res; @@ -502,8 +502,8 @@ static int audit_notify(THD *thd, mysql_event_class_t event_class, // only audit for connect and change_user. disconnect is caught by general event if (event_connection->event_subclass != MYSQL_AUDIT_CONNECTION_DISCONNECT) { - ThdSesData ThdData (thd); - audit (&ThdData); + ThdSesData ThdData(thd); + audit(&ThdData); } } #if ! defined(MARIADB_BASE_VERSION) && MYSQL_VERSION_ID >= 50709 @@ -617,7 +617,7 @@ int is_remove_patches(ThdSesData *pThdData) const char *cmd = pThdData->getCmdName(); const char *sUninstallPlugin = "uninstall_plugin"; LEX *pLex = Audit_formatter::thd_lex(pThdData->getTHD()); - if (pThdData->getTHD() && pLex!=NULL && strncasecmp(cmd, sUninstallPlugin, strlen(sUninstallPlugin)) == 0) + if (pThdData->getTHD() && pLex != NULL && strncasecmp(cmd, sUninstallPlugin, strlen(sUninstallPlugin)) == 0) { LEX_STRING Lex_comment = *(LEX_STRING*)(((unsigned char *) pLex) + Audit_formatter::thd_offsets.lex_comment); if (strncasecmp(Lex_comment.str, "AUDIT", 5) == 0) @@ -778,7 +778,7 @@ static bool parse_thd_offsets_string (char *poffsets_string) for (size_t j = 0; j < len; j++) { - if (!((poffset_str[j] >= '0' && poffset_str[j] <= '9') || poffset_str[j] == ' ' || poffset_str[j] == ',')) + if (! (isdigit(poffset_str[j]) || poffset_str[j] == ' ' || poffset_str[j] == ',')) { return false; } @@ -1050,7 +1050,7 @@ static int setup_offsets() if (offsets_by_version_enable) { bool server_is_ndb = strstr(server_version, "ndb") != NULL; - for (size_t i=0; i < arr_size; i++) + for (size_t i = 0; i < arr_size; i++) { offset = thd_offsets_arr + i; const char *version = offset->version; @@ -1430,7 +1430,8 @@ static void json_socket_name_update(THD *thd, struct st_mysql_sys_var *var, void } const char *str = str_val; - const size_t buff_len = array_elements( json_socket_name_buff) -1; + const size_t buff_len = array_elements(json_socket_name_buff) - 1; + // copy str to buffer only if str is not pointing to buff if (NULL == str) { @@ -1438,11 +1439,12 @@ static void json_socket_name_update(THD *thd, struct st_mysql_sys_var *var, void } else if (str != json_socket_name_buff) { - strncpy( json_socket_name_buff , str, buff_len); + strncpy(json_socket_name_buff, str, buff_len); } + if (strlen(json_socket_name_buff) == 0 && (mysqld_port > 0 || mysqld_unix_port)) // set default { - const char *name_prefix = "/tmp/mysql.audit_"; + const char *name_prefix = "/var/run/db-audit/mysql.audit_"; size_t indx = strlen(name_prefix); // count how much to move forward the buff strncpy(json_socket_name_buff, name_prefix, buff_len); @@ -1830,7 +1832,7 @@ static MYSQL_SYSVAR_STR(json_log_file, json_file_handler.m_io_dest, NULL, NULL, "mysql-audit.json"); static MYSQL_SYSVAR_LONG(json_file_bufsize, json_file_handler.m_bufsize, PLUGIN_VAR_RQCMDARG, - "AUDIT plugin json log file buffer size. Buffer size in bytes (lager size may improve performance). 0 = use default size, 1 = no buffering. If changed during runtime need to perform a flush for the new value to take affect.", + "AUDIT plugin json log file buffer size. Buffer size in bytes (larger size may improve performance). 0 = use default size, 1 = no buffering. If changed during runtime need to perform a flush for the new value to take affect.", NULL, NULL, 0, 1, 262144, 0); static MYSQL_SYSVAR_UINT(json_file_sync, json_file_handler.m_sync_period, @@ -1922,7 +1924,7 @@ static MYSQL_SYSVAR_STR(password_masking_cmds, password_masking_cmds_string, PLUGIN_VAR_RQCMDARG, "AUDIT plugin commands to apply password masking regex to, comma separated", NULL, password_masking_cmds_string_update, - // set passowrd is recoreded as set_option + // set password is recorded as set_option "CREATE_USER,GRANT,SET_OPTION,SLAVE_START,CREATE_SERVER,ALTER_SERVER,CHANGE_MASTER"); static MYSQL_SYSVAR_STR(whitelist_users, whitelist_users_string, PLUGIN_VAR_RQCMDARG,