ksh-regress.rt   [plain text]


NOTE regression tests for --regress enabled ksh

UNIT ksh-regress

EXPORT HOME=. ENV=.env.sh LC_ALL=C HISTFILE=

TEST mode suid/sgid combinations

# these tests are the product { all modes combinations } X { tests }

defaults=(
	"etc=$HOME"
	"source"
)
modes=(
	interactive
	login
	privileged
	rc
	restricted
)
tests=(
	""
	"euid=0"
	"euid=0 p_suid=0"
	"euid=0 p_suid=99999"
	"euid=1"
	"euid=1 p_suid=0"
	"euid=1 p_suid=99999"
	"egid=1"
	"egid=1 p_suid=0"
	"egid=1 p_suid=99999"
)

integer n=1 m=${#modes[@]}
d=
for o in ${defaults[@]}
do	d="$d --regress=$o"
done
for ((b=0; b<m; b++))
do	(( n *= 3 ))
done
for (( b=0; b<n; b++ ))
do	k=
	z=$(printf "%0$m..3u" $b)
	for (( i=0; i<m; i++ ))
	do	case $z in
		1*)	k="$k --no${modes[i]}" ;;
		2*)	k="$k --${modes[i]}" ;;
		esac
		z=${z#?}
	done
	for t in "${tests[@]}"
	do	o=$d
		for r in $t
		do	o="$o --regress=$r"
		done
		o="$o $k"

EXEC $o <<!
set --state
!

	done
done

TEST privileged/noprivileged sequence

EXEC --regress=etc=. --regress=euid=1 --privileged <<!
set --state; set --noprivileged; set --state; set --privileged; set --state; set --noprivileged; set --state
!