From dbb4d8d93be8cefac0cdbbe1ca15ea5d4356aad5 Mon Sep 17 00:00:00 2001 From: Georg Richter Date: Wed, 22 Feb 2023 11:32:21 +0100 Subject: [PATCH] Fixed segfault: Use rpl->host and port instead of mysql->options. --- libmariadb/mariadb_rpl.c | 4 ++-- unittest/libmariadb/rpl_api.c | 13 ++++++++++++- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/libmariadb/mariadb_rpl.c b/libmariadb/mariadb_rpl.c index 1f27ad94..37dbf330 100644 --- a/libmariadb/mariadb_rpl.c +++ b/libmariadb/mariadb_rpl.c @@ -763,13 +763,13 @@ int STDCALL mariadb_rpl_open(MARIADB_RPL *rpl) 4 source server id (unused) */ unsigned char *p, buffer[1024]; - size_t len= MIN(strlen(rpl->mysql->options.extension->rpl_host), 255); + size_t len= MIN(strlen(rpl->host), 255); p= buffer; int4store(p, rpl->server_id); p+= 4; *p++= (unsigned char)len; - memcpy(p, rpl->mysql->options.extension->rpl_host, len); + memcpy(p, rpl->host, len); p+= len; /* Don't send user, password, rank and server_id */ diff --git a/unittest/libmariadb/rpl_api.c b/unittest/libmariadb/rpl_api.c index 7facba25..2c62a319 100644 --- a/unittest/libmariadb/rpl_api.c +++ b/unittest/libmariadb/rpl_api.c @@ -136,13 +136,24 @@ static int test_rpl_semisync(MYSQL *my __attribute__((unused))) rpl = mariadb_rpl_init(mysql); + mariadb_rpl_optionsv(rpl, MARIADB_RPL_HOST, "foo"); + + mysql_query(mysql, "SET @mariadb_slave_capability=4"); + mysql_query(mysql, "SET NAMES latin1"); + mysql_query(mysql, "SET @slave_gtid_strict_mode=1"); + mysql_query(mysql, "SET @slave_gtid_ignore_duplicates=1"); + mysql_query(mysql, "SET NAMES utf8"); + mysql_query(mysql, "SET @master_binlog_checksum= @@global.binlog_checksum"); + rpl->server_id= 12; + rpl->start_position= 4; + rpl->flags= MARIADB_RPL_BINLOG_SEND_ANNOTATE_ROWS; + mysql_query(mysql, "SET @mariadb_slave_capability=4"); mysql_query(mysql, "SET NAMES latin1"); mysql_query(mysql, "SET @slave_gtid_strict_mode=1"); mysql_query(mysql, "SET @slave_gtid_ignore_duplicates=1"); mysql_query(mysql, "SET NAMES utf8"); mysql_query(mysql, "SET @master_binlog_checksum= @@global.binlog_checksum"); - mysql_query(mysql, "SET @rpl_semi_sync_slave=1"); rpl->server_id= 12; rpl->start_position= 4; rpl->flags= MARIADB_RPL_BINLOG_SEND_ANNOTATE_ROWS;