Skip to content
Permalink
Browse files
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.
  • Loading branch information
grooverdan committed Mar 8, 2018
1 parent d705735 commit 04ed70f
Showing 1 changed file with 22 additions and 0 deletions.
@@ -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

0 comments on commit 04ed70f

Please sign in to comment.