diff options
author | Daniele Sciascia <daniele.sciascia@galeracluster.com> | 2016-06-09 09:21:43 +0200 |
---|---|---|
committer | Nirbhay Choubey <nirbhay@mariadb.com> | 2016-08-21 16:17:17 -0400 |
commit | ea3ff73031dd14664045bcbe7ad922b780d229c9 (patch) | |
tree | de0caf8c687874fdd47019bd0fb72239816ee92f /sql/wsrep_mysqld.cc | |
parent | bf19492e3b3d73af6ea6c9ff61aa1838a55965ea (diff) | |
download | mariadb-git-ea3ff73031dd14664045bcbe7ad922b780d229c9.tar.gz |
GCF-837 Fix crash when loading wrong provider version
mysqld would crash with "double free or corrruption message"
if wrong provider version was given.
Diffstat (limited to 'sql/wsrep_mysqld.cc')
-rw-r--r-- | sql/wsrep_mysqld.cc | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/sql/wsrep_mysqld.cc b/sql/wsrep_mysqld.cc index 17e3577a6eb..3c2b2c07d55 100644 --- a/sql/wsrep_mysqld.cc +++ b/sql/wsrep_mysqld.cc @@ -484,8 +484,7 @@ int wsrep_init() WSREP_ERROR("wsrep_load(%s) failed: %s (%d). Reverting to no provider.", wsrep_provider, strerror(rcode), rcode); strcpy((char*)wsrep_provider, WSREP_NONE); // damn it's a dirty hack - (void) wsrep_init(); - return rcode; + return wsrep_init(); } else /* this is for recursive call above */ { @@ -671,6 +670,9 @@ void wsrep_init_startup (bool first) wsrep_thr_lock_init(wsrep_thd_is_BF, wsrep_abort_thd, wsrep_debug, wsrep_convert_LOCK_to_trx, wsrep_on); + /* Skip replication start if dummy wsrep provider is loaded */ + if (!strcmp(wsrep_provider, WSREP_NONE)) return; + /* Skip replication start if no cluster address */ if (!wsrep_cluster_address || strlen(wsrep_cluster_address) == 0) return; |