agent-ptrace.sh revision 255774
150276Speter#	$OpenBSD: agent-ptrace.sh,v 1.1 2002/12/09 15:38:30 markus Exp $
2166124Srafan#	Placed in the Public Domain.
350276Speter
450276Spetertid="disallow agent ptrace attach"
550276Speter
650276Speterif have_prog uname ; then
750276Speter	case `uname` in
850276Speter	AIX|CYGWIN*|OSF1)
950276Speter		echo "skipped (not supported on this platform)"
1050276Speter		exit 0
1150276Speter		;;
1250276Speter	esac
1350276Speterfi
1450276Speter
1550276Speterif have_prog gdb ; then
1650276Speter	: ok
1750276Speterelse
1850276Speter	echo "skipped (gdb not found)"
1950276Speter	exit 0
2050276Speterfi
2150276Speter
2250276Speterif test -z "$SUDO" ; then
2350276Speter	echo "skipped (SUDO not set)"
2450276Speter	exit 0
2550276Speterelse
2650276Speter	$SUDO chown 0 ${SSHAGENT}
2750276Speter	$SUDO chgrp 0 ${SSHAGENT}
2850276Speter	$SUDO chmod 2755 ${SSHAGENT}
2950276Speterfi
30166124Srafan
3150276Spetertrace "start agent"
32166124Srafaneval `${SSHAGENT} -s` > /dev/null
3350276Speterr=$?
3450276Speterif [ $r -ne 0 ]; then
35166124Srafan	fail "could not start ssh-agent: exit code $r"
3650276Speterelse
3750276Speter	# ls -l ${SSH_AUTH_SOCK}
3850276Speter	gdb ${SSHAGENT} ${SSH_AGENT_PID} > ${OBJ}/gdb.out 2>&1 << EOF
3950276Speter		quit
4050276SpeterEOF
4150276Speter	if [ $? -ne 0 ]; then
4250276Speter		fail "gdb failed: exit code $?"
4350276Speter	fi
4450276Speter	egrep 'ptrace: Operation not permitted.|procfs:.*Permission denied.|ttrace.*Permission denied.|procfs:.*: Invalid argument.|Unable to access task ' >/dev/null ${OBJ}/gdb.out
4550276Speter	r=$?
4650276Speter	rm -f ${OBJ}/gdb.out
4750276Speter	if [ $r -ne 0 ]; then
4850276Speter		fail "ptrace succeeded?: exit code $r"
4950276Speter	fi
5050276Speter
5176726Speter	trace "kill agent"
52166124Srafan	${SSHAGENT} -k > /dev/null
5350276Speterfi
5450276Speter