Better handle filesystems mounted with -o noexec
ftruncate/11, open/20, and truncate/11 copy sleep(1) to a temporary file on the target filesystem, execute the binary, then expect a result. This doesn't work with scenarios where the target binary cannot be executed, e.g. the filesystem was mounted with -o noexec. Ensure the filesystem hasn't been mounted with -o noexec for the testcases before executing them. Differential Revision: https://reviews.freebsd.org/D5622 MFC after: 1 week Reviewed by: markj Sponsored by: EMC / Isilon Storage Division
This commit is contained in:
parent
cb1469fdd6
commit
45dc13f1ea
@ -8,6 +8,8 @@ dir=`dirname $0`
|
|||||||
|
|
||||||
[ "${os}" = "FreeBSD" ] || quick_exit
|
[ "${os}" = "FreeBSD" ] || quick_exit
|
||||||
|
|
||||||
|
requires_exec
|
||||||
|
|
||||||
echo "1..2"
|
echo "1..2"
|
||||||
|
|
||||||
n0=`namegen`
|
n0=`namegen`
|
||||||
|
@ -219,3 +219,37 @@ create_file() {
|
|||||||
expect 0 lchmod ${name} ${3}
|
expect 0 lchmod ${name} ${3}
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Tests for whether or not a filesystem is mounted with a particular option
|
||||||
|
# with -o, e.g. `mount -o noexec`.
|
||||||
|
#
|
||||||
|
# Parameters:
|
||||||
|
# - mount_option - noatime, noexec, etc.
|
||||||
|
#
|
||||||
|
# Returns:
|
||||||
|
# - 0 if mounted with the option.
|
||||||
|
# - 1 otherwise.
|
||||||
|
has_mount_option()
|
||||||
|
{
|
||||||
|
local IFS=,
|
||||||
|
local mount_opt
|
||||||
|
|
||||||
|
local mount_option_search=$1
|
||||||
|
|
||||||
|
# XXX: mountpoint is defined in .../tests/sys/pjdfstest/tests/conf
|
||||||
|
for mount_opt in $(mount -d -p | awk '$2 == "'$mountpoint'" { print $4 }'); do
|
||||||
|
if [ "$mount_opt" = "$mount_option_search" ]; then
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
|
||||||
|
# Filesystem must be mounted with -o exec
|
||||||
|
requires_exec()
|
||||||
|
{
|
||||||
|
if has_mount_option noexec; then
|
||||||
|
echo "1..0 # SKIP filesystem mounted with -o noexec"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
@ -8,6 +8,8 @@ dir=`dirname $0`
|
|||||||
|
|
||||||
[ "${os}:${fs}" = "FreeBSD:UFS" ] || quick_exit
|
[ "${os}:${fs}" = "FreeBSD:UFS" ] || quick_exit
|
||||||
|
|
||||||
|
requires_exec
|
||||||
|
|
||||||
echo "1..4"
|
echo "1..4"
|
||||||
|
|
||||||
n0=`namegen`
|
n0=`namegen`
|
||||||
|
@ -8,6 +8,8 @@ dir=`dirname $0`
|
|||||||
|
|
||||||
[ "${os}" = "FreeBSD" ] || quick_exit
|
[ "${os}" = "FreeBSD" ] || quick_exit
|
||||||
|
|
||||||
|
requires_exec
|
||||||
|
|
||||||
echo "1..2"
|
echo "1..2"
|
||||||
|
|
||||||
n0=`namegen`
|
n0=`namegen`
|
||||||
|
Loading…
x
Reference in New Issue
Block a user