summaryrefslogtreecommitdiff
path: root/sql/repl_failsafe.h
diff options
context:
space:
mode:
authorLuis Soares <luis.soares@oracle.com>2010-10-11 15:50:14 +0100
committerLuis Soares <luis.soares@oracle.com>2010-10-11 15:50:14 +0100
commit86de24edee2db6b1c3f29f197ba4972b0e4f5acf (patch)
tree7ae955e00bf9f940c017f9e31fb13a04829d04bc /sql/repl_failsafe.h
parentd659cc54f961b14545df0b44f7f8538fd23f7fe7 (diff)
downloadmariadb-git-86de24edee2db6b1c3f29f197ba4972b0e4f5acf.tar.gz
Fix for crash in mysqld --verbose --help while initializing option
for --init-rpl-role. Problem: There are two variables involved in this issue, rpl_status and rpl_role_type. The former is an array containing the description of the possible values for the latter. rpl_status is declared as an enumeration and is stored in a 4 bytes integer. On the other hand, my_getopt, reads enum values into a ulong: *(ulong*)value= arg; This is overwriting the memory used for rpl_role_type, corrupting the first entry in the array. Fix: We fix this by re-declaring rpl_status as a ulong, so that it has space to accommodate the value "parsed" in my_getopt .
Diffstat (limited to 'sql/repl_failsafe.h')
-rw-r--r--sql/repl_failsafe.h4
1 files changed, 2 insertions, 2 deletions
diff --git a/sql/repl_failsafe.h b/sql/repl_failsafe.h
index c6d00de47cb..a0c41686696 100644
--- a/sql/repl_failsafe.h
+++ b/sql/repl_failsafe.h
@@ -26,7 +26,7 @@ typedef enum {RPL_AUTH_MASTER=0,RPL_IDLE_SLAVE,RPL_ACTIVE_SLAVE,
RPL_LOST_SOLDIER,RPL_TROOP_SOLDIER,
RPL_RECOVERY_CAPTAIN,RPL_NULL /* inactive */,
RPL_ANY /* wild card used by change_rpl_status */ } RPL_STATUS;
-extern RPL_STATUS rpl_status;
+extern ulong rpl_status;
extern mysql_mutex_t LOCK_rpl_status;
extern mysql_cond_t COND_rpl_status;
@@ -34,7 +34,7 @@ extern TYPELIB rpl_role_typelib;
extern const char* rpl_role_type[], *rpl_status_type[];
pthread_handler_t handle_failsafe_rpl(void *arg);
-void change_rpl_status(RPL_STATUS from_status, RPL_STATUS to_status);
+void change_rpl_status(ulong from_status, ulong to_status);
int find_recovery_captain(THD* thd, MYSQL* mysql);
int update_slave_list(MYSQL* mysql, Master_info* mi);