1
0
mirror of https://github.com/MariaDB/server.git synced 2025-08-05 13:16:09 +03:00

Two problems with auth_parsec.so

1. it links with ${SSL_LIBRARIES}, in WolfSSL builds it's a static
   library, so when a plugin is loaded there will be two copies of
   wolfssl in the same address space. It breaks odr (at least).
2. Plugin can linked with OpenSSL and the server with WolfSSL or
   vice versa. It might load, but then we'll have both WolfSSL and
   OpenSSL at the same time. Kind of risky.

Fix: link the plugin statically into the server if it's a WolfSSL build

adjust tests to work with static and dynamic parsec
This commit is contained in:
Sergei Golubchik
2024-08-10 21:27:58 +02:00
parent 72d54ff9d4
commit 05fe3f1c18
8 changed files with 32 additions and 47 deletions

View File

@@ -2,21 +2,20 @@
source include/not_msan.inc;
if ($MTR_COMBINATION_ED25519) {
if (!$AUTH_ED25519_SO) {
skip No auth_ed25519 plugin;
}
let $AUTH_PLUGIN = ed25519;
let $CLIENT_PLUGIN=client_ed25519;
}
if ($MTR_COMBINATION_PARSEC) {
if (!$AUTH_PARSEC_SO) {
skip No auth_parsec plugin;
}
let $AUTH_PLUGIN = parsec;
let $CLIENT_PLUGIN=parsec;
}
if (`select count(*) = 0 from information_schema.plugins where plugin_name = '$AUTH_PLUGIN'`)
{
--skip Needs $AUTH_PLUGIN plugin
}
--replace_result $CLIENT_PLUGIN CLIENT_PLUGIN
--error ER_CANT_OPEN_LIBRARY,ER_CANT_FIND_DL_ENTRY
eval install soname '$CLIENT_PLUGIN';
@@ -25,36 +24,22 @@ if ($errno == 1126) {
skip $CLIENT_PLUGIN is not found or contains unresolved symbols;
}
source include/master-slave.inc;
sync_slave_with_master;
--replace_result $AUTH_PLUGIN PLUGIN
eval install soname 'auth_$AUTH_PLUGIN';
# create a user for replication with auth plugin
connection master;
--replace_result $AUTH_PLUGIN plugin
eval install soname 'auth_$AUTH_PLUGIN';
--replace_result $AUTH_PLUGIN PLUGIN
eval create user rpluser@'%' identified via $AUTH_PLUGIN using PASSWORD('rpl_pass');
grant replication slave on *.* to rpluser@'%';
connection master;
sync_slave_with_master;
source include/master-slave.inc;
connection slave;
# Set the slave to connect using the user created with the auth plugin for replication
source include/stop_slave.inc;
--replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR
change master to master_user='rpluser', master_password='rpl_pass';
source include/start_slave.inc;
--echo # Cleanup
source include/stop_slave.inc;
change master to master_user='root', master_password='';
source include/start_slave.inc;
source include/stop_slave.inc;
source include/rpl_end.inc;
drop user rpluser@'%';
--replace_result $AUTH_PLUGIN plugin
eval uninstall soname 'auth_$AUTH_PLUGIN';
connection master;
drop user rpluser@'%';
--replace_result $AUTH_PLUGIN plugin
eval uninstall soname 'auth_$AUTH_PLUGIN';