mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
Bug #58455
Starting mysqld with defaults file without extension cause segmentation fault Bug occurs because fn_expand calls fn_format with NULL as ext. This is a backport of the patch from 5.6. Patch solve this problem by using an empty string as extension, and adding assertions to fn_format that correct arguments are passed. It also add a test tests several variations of using non-existing defaults files.
This commit is contained in:
47
mysql-test/t/mysqld--defaults-file.test
Normal file
47
mysql-test/t/mysqld--defaults-file.test
Normal file
@ -0,0 +1,47 @@
|
||||
# BUG#58455
|
||||
# Starting mysqld with defaults file without extension cause
|
||||
# segmentation fault
|
||||
|
||||
source include/not_embedded.inc;
|
||||
source include/not_windows.inc;
|
||||
|
||||
# We need to use a plain "mysqld" without any other options to trigger
|
||||
# the bug. In particular, it seems that passing --bootstrap does not
|
||||
# trigger the bug. To do that, we extract the "command name" from the
|
||||
# MYSQLD_BOOTSTRAP_CMD variable and store that in a file, which we
|
||||
# then load into the test case.
|
||||
|
||||
perl;
|
||||
my ($mysqld)= split " ", $ENV{MYSQLD_BOOTSTRAP_CMD};
|
||||
open(FILE, ">", "$ENV{MYSQL_TMP_DIR}/mysqld.inc") or die;
|
||||
print FILE "let \$MYSQLD= $mysqld;\n";
|
||||
close FILE;
|
||||
EOF
|
||||
|
||||
source $MYSQL_TMP_DIR/mysqld.inc;
|
||||
|
||||
# All these tests refer to configuration files that do not exist
|
||||
|
||||
--error 1
|
||||
exec $MYSQLD --defaults-file=/path/with/no/extension --print-defaults 2>&1;
|
||||
|
||||
--error 1
|
||||
exec $MYSQLD --defaults-file=/path/with.ext --print-defaults 2>&1;
|
||||
|
||||
--replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR
|
||||
--error 1
|
||||
exec $MYSQLD --defaults-file=relative/path/with.ext --print-defaults 2>&1;
|
||||
|
||||
--replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR
|
||||
--error 1
|
||||
exec $MYSQLD --defaults-file=relative/path/without/extension --print-defaults 2>&1;
|
||||
|
||||
--replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR
|
||||
--error 1
|
||||
exec $MYSQLD --defaults-file=with.ext --print-defaults 2>&1;
|
||||
|
||||
--replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR
|
||||
--error 1
|
||||
exec $MYSQLD --defaults-file=no_extension --print-defaults 2>&1;
|
||||
|
||||
remove_file $MYSQL_TMP_DIR/mysqld.inc;
|
Reference in New Issue
Block a user