xref: /freebsd/crypto/openssh/regress/agent-ptrace.sh (revision 535af610a4fdace6d50960c0ad9be0597eea7a1b)
138a52bd3SEd Maste#	$OpenBSD: agent-ptrace.sh,v 1.5 2022/04/22 05:08:43 anton Exp $
2ce3adf43SDag-Erling Smørgrav#	Placed in the Public Domain.
3ce3adf43SDag-Erling Smørgrav
4ce3adf43SDag-Erling Smørgravtid="disallow agent ptrace attach"
5ce3adf43SDag-Erling Smørgrav
6ce3adf43SDag-Erling Smørgravif have_prog uname ; then
7ce3adf43SDag-Erling Smørgrav	case `uname` in
8ce3adf43SDag-Erling Smørgrav	AIX|CYGWIN*|OSF1)
9ce3adf43SDag-Erling Smørgrav		echo "skipped (not supported on this platform)"
10ce3adf43SDag-Erling Smørgrav		exit 0
11ce3adf43SDag-Erling Smørgrav		;;
12ce3adf43SDag-Erling Smørgrav	esac
13ce3adf43SDag-Erling Smørgravfi
14ce3adf43SDag-Erling Smørgrav
15acc1a9efSDag-Erling Smørgravif [ "x$USER" = "xroot" ]; then
16acc1a9efSDag-Erling Smørgrav	echo "Skipped: running as root"
17acc1a9efSDag-Erling Smørgrav	exit 0
18acc1a9efSDag-Erling Smørgravfi
19acc1a9efSDag-Erling Smørgrav
20ce3adf43SDag-Erling Smørgravif have_prog gdb ; then
21ce3adf43SDag-Erling Smørgrav	: ok
22ce3adf43SDag-Erling Smørgravelse
23ce3adf43SDag-Erling Smørgrav	echo "skipped (gdb not found)"
24ce3adf43SDag-Erling Smørgrav	exit 0
25ce3adf43SDag-Erling Smørgravfi
26ce3adf43SDag-Erling Smørgrav
27f7167e0eSDag-Erling Smørgravif $OBJ/setuid-allowed ${SSHAGENT} ; then
28f7167e0eSDag-Erling Smørgrav	: ok
29f7167e0eSDag-Erling Smørgravelse
30f7167e0eSDag-Erling Smørgrav	echo "skipped (${SSHAGENT} is mounted on a no-setuid filesystem)"
31f7167e0eSDag-Erling Smørgrav	exit 0
32f7167e0eSDag-Erling Smørgravfi
33f7167e0eSDag-Erling Smørgrav
34ce3adf43SDag-Erling Smørgravif test -z "$SUDO" ; then
35ce3adf43SDag-Erling Smørgrav	echo "skipped (SUDO not set)"
36ce3adf43SDag-Erling Smørgrav	exit 0
37ce3adf43SDag-Erling Smørgravelse
38ce3adf43SDag-Erling Smørgrav	$SUDO chown 0 ${SSHAGENT}
39ce3adf43SDag-Erling Smørgrav	$SUDO chgrp 0 ${SSHAGENT}
40ce3adf43SDag-Erling Smørgrav	$SUDO chmod 2755 ${SSHAGENT}
41f374ba41SEd Maste	trap "$SUDO chown ${USER} ${SSHAGENT}; $SUDO chmod 755 ${SSHAGENT}" 0
42ce3adf43SDag-Erling Smørgravfi
43ce3adf43SDag-Erling Smørgrav
44ce3adf43SDag-Erling Smørgravtrace "start agent"
4519261079SEd Masteeval `${SSHAGENT} ${EXTRA_AGENT_ARGS} -s` > /dev/null
46ce3adf43SDag-Erling Smørgravr=$?
47ce3adf43SDag-Erling Smørgravif [ $r -ne 0 ]; then
48ce3adf43SDag-Erling Smørgrav	fail "could not start ssh-agent: exit code $r"
49ce3adf43SDag-Erling Smørgravelse
50ce3adf43SDag-Erling Smørgrav	# ls -l ${SSH_AUTH_SOCK}
51ce3adf43SDag-Erling Smørgrav	gdb ${SSHAGENT} ${SSH_AGENT_PID} > ${OBJ}/gdb.out 2>&1 << EOF
52ce3adf43SDag-Erling Smørgrav		quit
53ce3adf43SDag-Erling SmørgravEOF
54f7167e0eSDag-Erling Smørgrav	r=$?
55f7167e0eSDag-Erling Smørgrav	if [ $r -ne 0 ]; then
56f7167e0eSDag-Erling Smørgrav		fail "gdb failed: exit code $r"
57ce3adf43SDag-Erling Smørgrav	fi
58*535af610SEd Maste	egrep 'Operation not permitted.|Permission denied.|Invalid argument.|Unable to access task|Inappropriate ioctl for device.' >/dev/null ${OBJ}/gdb.out
59ce3adf43SDag-Erling Smørgrav	r=$?
60ce3adf43SDag-Erling Smørgrav	rm -f ${OBJ}/gdb.out
61ce3adf43SDag-Erling Smørgrav	if [ $r -ne 0 ]; then
62ce3adf43SDag-Erling Smørgrav		fail "ptrace succeeded?: exit code $r"
63ce3adf43SDag-Erling Smørgrav	fi
64ce3adf43SDag-Erling Smørgrav
65ce3adf43SDag-Erling Smørgrav	trace "kill agent"
66ce3adf43SDag-Erling Smørgrav	${SSHAGENT} -k > /dev/null
67ce3adf43SDag-Erling Smørgravfi
68