summaryrefslogtreecommitdiffstats
path: root/tests/functions.sh
diff options
context:
space:
mode:
authorKarel Zak2007-06-15 15:55:10 +0200
committerKarel Zak2007-06-15 15:55:10 +0200
commit1b5417aca1978450312303fa144d327ad1ca5aa7 (patch)
treecf99a6b512ba1319d87baaa437f19f8b2b746dd6 /tests/functions.sh
parentmount: rewrite getfs_by_specdir() without mem leaks (diff)
downloadkernel-qcow2-util-linux-1b5417aca1978450312303fa144d327ad1ca5aa7.tar.gz
kernel-qcow2-util-linux-1b5417aca1978450312303fa144d327ad1ca5aa7.tar.xz
kernel-qcow2-util-linux-1b5417aca1978450312303fa144d327ad1ca5aa7.zip
tests: add support for suid programs
Signed-off-by: Karel Zak <kzak@redhat.com>
Diffstat (limited to 'tests/functions.sh')
-rw-r--r--tests/functions.sh23
1 files changed, 23 insertions, 0 deletions
diff --git a/tests/functions.sh b/tests/functions.sh
index 4a59ff32d..11a1ae5d9 100644
--- a/tests/functions.sh
+++ b/tests/functions.sh
@@ -58,6 +58,10 @@ function ts_init {
mkdir -p $TS_DIFFDIR
fi
+ declare -a TS_SUID_PROGS
+ declare -a TS_SUID_USER
+ declare -a TS_SUID_GROUP
+
TS_VERBOSE=$( ts_has_option "verbose" "$*")
TS_OUTPUT="$TS_OUTDIR/$TS_NAME"
TS_DIFF="$TS_DIFFDIR/$TS_NAME"
@@ -85,9 +89,28 @@ function ts_init {
printf "%15s: %-25s ..." "$TS_COMPONENT" "$TS_DESC"
}
+function ts_init_suid {
+ PROG="$1"
+ ct=${#TS_SUID_PROGS[*]}
+
+ # Save info about original setting
+ TS_SUID_PROGS[$ct]=$PROG
+ TS_SUID_USER[$ct]=$(stat --printf="%U" $PROG)
+ TS_SUID_GROUP[$ct]=$(stat --printf="%G" $PROG)
+
+ chown root.root $PROG &> /dev/null
+ chmod u+s $PROG &> /dev/null
+}
+
function ts_finalize {
local res=0
+ for idx in $(seq 0 $((${#TS_SUID_PROGS[*]} - 1))); do
+ PROG=${TS_SUID_PROGS[$idx]}
+ chmod a-s $PROG &> /dev/null
+ chown ${TS_SUID_USER[$idx]}.${TS_SUID_GROUP[$idx]} $PROG &> /dev/null
+ done
+
if [ -s $TS_EXPECTED ]; then
if [ -s $TS_OUTPUT ]; then
diff -u $TS_EXPECTED $TS_OUTPUT > $TS_DIFF