Commit 04ed70fa authored by Daniel Black's avatar Daniel Black

MDEV-8743: wsrep_sst_common close FDs > 2

To prevent accidential overwriting of files due to mysqld file
descriptors being open we ensure where that only FDs 1, 2 and 3
are available to SST scripts. Assumed is mysqld has thse still
mapped to stdin (unused), stdout and stderr.
parent d7057356
......@@ -16,6 +16,28 @@
# This is a common command line parser to be sourced by other SST scripts
# Close file descriptors numbered above 2 just in case mysqld or the
# wsrep_provider left a file descriptor open. We don't want a broken SST
# script or called program from overwriting a tablespace because
# its file descriptor was left open.
if [ -d /proc/self/fd ]; then
for fd in /proc/self/fd/*; do
fd=${fd##*/}
# While bash would support the below syntax other sh's don't
#[ $fd -gt 2 ] && exec {fd}>&-
[ $fd -gt 2 ] && eval "exec ${fd}>&-" 2> /dev/null
done
else
upper_no_file=$(ulimit -n)
[ "$upper_no_file" = "unlimited" ] || [ -z "$upper_no_file" ] && upper_no_file=1024
while [ $upper_no_file -gt 2 ]
do
eval "exec ${upper_no_file}>&-"
upper_no_file=$(( "$upper_no_file" - 1 ))
done
fi
set -u
WSREP_SST_OPT_BYPASS=0
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment