MDEV-23092 SIGABRT when setting invalid wsrep_provider
Some invalid wsrep_provider paths may be interpreted as a valid directory. For example '/invalid/libgalera_smm.so' with UTF character set is interpreted as '/', which is a valid directory. A early check that wsrep_provider should not be a directory fixes it.
This commit is contained in:
parent
09dd06f14a
commit
fe3284b2cc
13
mysql-test/suite/wsrep/r/MDEV-23092.result
Normal file
13
mysql-test/suite/wsrep/r/MDEV-23092.result
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
SET COLLATION_CONNECTION='utf16le_bin';
|
||||||
|
SET GLOBAL wsrep_provider='/invalid/path/libgalera_smm.so';
|
||||||
|
ERROR 42000: Variable 'wsrep_provider' can't be set to the value of '/'
|
||||||
|
SET GLOBAL wsrep_cluster_address='OFF';
|
||||||
|
SET GLOBAL wsrep_slave_threads=10;
|
||||||
|
SELECT 1;
|
||||||
|
1
|
||||||
|
1
|
||||||
|
SET GLOBAL wsrep_cluster_address='gcomm://';
|
||||||
|
SET GLOBAL wsrep_slave_threads=DEFAULT;
|
||||||
|
CALL mtr.add_suppression("wsrep_load()");
|
||||||
|
CALL mtr.add_suppression("Failed to create a new provider");
|
||||||
|
CALL mtr.add_suppression("Failed to load provider");
|
8
mysql-test/suite/wsrep/t/MDEV-23092.cnf
Normal file
8
mysql-test/suite/wsrep/t/MDEV-23092.cnf
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
!include ../my.cnf
|
||||||
|
|
||||||
|
[mysqld.1]
|
||||||
|
wsrep-on=OFF
|
||||||
|
binlog-format=ROW
|
||||||
|
wsrep-provider=none
|
||||||
|
wsrep-cluster-address='gcomm://'
|
||||||
|
innodb_autoinc_lock_mode=2
|
22
mysql-test/suite/wsrep/t/MDEV-23092.test
Normal file
22
mysql-test/suite/wsrep/t/MDEV-23092.test
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
#
|
||||||
|
# MDEV-23092: SIGABRT in wsrep::server_state::provider when setting
|
||||||
|
# invalid wsrep_provider (on optimized builds)
|
||||||
|
#
|
||||||
|
|
||||||
|
--source include/have_innodb.inc
|
||||||
|
--source include/have_wsrep.inc
|
||||||
|
--source include/have_binlog_format_row.inc
|
||||||
|
|
||||||
|
SET COLLATION_CONNECTION='utf16le_bin';
|
||||||
|
--error 1231
|
||||||
|
SET GLOBAL wsrep_provider='/invalid/path/libgalera_smm.so';
|
||||||
|
SET GLOBAL wsrep_cluster_address='OFF';
|
||||||
|
SET GLOBAL wsrep_slave_threads=10;
|
||||||
|
SELECT 1;
|
||||||
|
|
||||||
|
SET GLOBAL wsrep_cluster_address='gcomm://';
|
||||||
|
SET GLOBAL wsrep_slave_threads=DEFAULT;
|
||||||
|
|
||||||
|
CALL mtr.add_suppression("wsrep_load()");
|
||||||
|
CALL mtr.add_suppression("Failed to create a new provider");
|
||||||
|
CALL mtr.add_suppression("Failed to load provider");
|
@ -320,6 +320,12 @@ static int wsrep_provider_verify (const char* provider_str)
|
|||||||
{
|
{
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (MY_S_ISDIR(f_stat.st_mode))
|
||||||
|
{
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user