summaryrefslogtreecommitdiff
path: root/sql/wsrep_mysqld.cc
diff options
context:
space:
mode:
authorDaniele Sciascia <daniele.sciascia@galeracluster.com>2016-06-09 09:21:43 +0200
committerNirbhay Choubey <nirbhay@mariadb.com>2016-08-21 16:17:17 -0400
commitea3ff73031dd14664045bcbe7ad922b780d229c9 (patch)
treede0caf8c687874fdd47019bd0fb72239816ee92f /sql/wsrep_mysqld.cc
parentbf19492e3b3d73af6ea6c9ff61aa1838a55965ea (diff)
downloadmariadb-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.cc6
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;