1264377Sdes#	$OpenBSD: agent-ptrace.sh,v 1.2 2014/02/27 21:21:25 djm Exp $
2113908Sdes#	Placed in the Public Domain.
3113908Sdes
4113908Sdestid="disallow agent ptrace attach"
5113908Sdes
6124208Sdesif have_prog uname ; then
7124208Sdes	case `uname` in
8146998Sdes	AIX|CYGWIN*|OSF1)
9124208Sdes		echo "skipped (not supported on this platform)"
10124208Sdes		exit 0
11124208Sdes		;;
12124208Sdes	esac
13124208Sdesfi
14124208Sdes
15296781Sdesif [ "x$USER" = "xroot" ]; then
16296781Sdes	echo "Skipped: running as root"
17296781Sdes	exit 0
18296781Sdesfi
19296781Sdes
20124208Sdesif have_prog gdb ; then
21124208Sdes	: ok
22124208Sdeselse
23124208Sdes	echo "skipped (gdb not found)"
24124208Sdes	exit 0
25124208Sdesfi
26124208Sdes
27262566Sdesif $OBJ/setuid-allowed ${SSHAGENT} ; then
28262566Sdes	: ok
29262566Sdeselse
30262566Sdes	echo "skipped (${SSHAGENT} is mounted on a no-setuid filesystem)"
31262566Sdes	exit 0
32262566Sdesfi
33262566Sdes
34126274Sdesif test -z "$SUDO" ; then
35126274Sdes	echo "skipped (SUDO not set)"
36126274Sdes	exit 0
37126274Sdeselse
38126274Sdes	$SUDO chown 0 ${SSHAGENT}
39126274Sdes	$SUDO chgrp 0 ${SSHAGENT}
40126274Sdes	$SUDO chmod 2755 ${SSHAGENT}
41126274Sdesfi
42126274Sdes
43113908Sdestrace "start agent"
44113908Sdeseval `${SSHAGENT} -s` > /dev/null
45113908Sdesr=$?
46113908Sdesif [ $r -ne 0 ]; then
47113908Sdes	fail "could not start ssh-agent: exit code $r"
48113908Sdeselse
49113908Sdes	# ls -l ${SSH_AUTH_SOCK}
50113908Sdes	gdb ${SSHAGENT} ${SSH_AGENT_PID} > ${OBJ}/gdb.out 2>&1 << EOF
51113908Sdes		quit
52113908SdesEOF
53262566Sdes	r=$?
54262566Sdes	if [ $r -ne 0 ]; then
55262566Sdes		fail "gdb failed: exit code $r"
56113908Sdes	fi
57218767Sdes	egrep 'ptrace: Operation not permitted.|procfs:.*Permission denied.|ttrace.*Permission denied.|procfs:.*: Invalid argument.|Unable to access task ' >/dev/null ${OBJ}/gdb.out
58113908Sdes	r=$?
59113908Sdes	rm -f ${OBJ}/gdb.out
60113908Sdes	if [ $r -ne 0 ]; then
61113908Sdes		fail "ptrace succeeded?: exit code $r"
62113908Sdes	fi
63113908Sdes
64113908Sdes	trace "kill agent"
65113908Sdes	${SSHAGENT} -k > /dev/null
66113908Sdesfi
67