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 15124208Sdesif have_prog gdb ; then 16124208Sdes : ok 17124208Sdeselse 18124208Sdes echo "skipped (gdb not found)" 19124208Sdes exit 0 20124208Sdesfi 21124208Sdes 22262566Sdesif $OBJ/setuid-allowed ${SSHAGENT} ; then 23262566Sdes : ok 24262566Sdeselse 25262566Sdes echo "skipped (${SSHAGENT} is mounted on a no-setuid filesystem)" 26262566Sdes exit 0 27262566Sdesfi 28262566Sdes 29126274Sdesif test -z "$SUDO" ; then 30126274Sdes echo "skipped (SUDO not set)" 31126274Sdes exit 0 32126274Sdeselse 33126274Sdes $SUDO chown 0 ${SSHAGENT} 34126274Sdes $SUDO chgrp 0 ${SSHAGENT} 35126274Sdes $SUDO chmod 2755 ${SSHAGENT} 36126274Sdesfi 37126274Sdes 38113908Sdestrace "start agent" 39113908Sdeseval `${SSHAGENT} -s` > /dev/null 40113908Sdesr=$? 41113908Sdesif [ $r -ne 0 ]; then 42113908Sdes fail "could not start ssh-agent: exit code $r" 43113908Sdeselse 44113908Sdes # ls -l ${SSH_AUTH_SOCK} 45113908Sdes gdb ${SSHAGENT} ${SSH_AGENT_PID} > ${OBJ}/gdb.out 2>&1 << EOF 46113908Sdes quit 47113908SdesEOF 48262566Sdes r=$? 49262566Sdes if [ $r -ne 0 ]; then 50262566Sdes fail "gdb failed: exit code $r" 51113908Sdes fi 52218767Sdes egrep 'ptrace: Operation not permitted.|procfs:.*Permission denied.|ttrace.*Permission denied.|procfs:.*: Invalid argument.|Unable to access task ' >/dev/null ${OBJ}/gdb.out 53113908Sdes r=$? 54113908Sdes rm -f ${OBJ}/gdb.out 55113908Sdes if [ $r -ne 0 ]; then 56113908Sdes fail "ptrace succeeded?: exit code $r" 57113908Sdes fi 58113908Sdes 59113908Sdes trace "kill agent" 60113908Sdes ${SSHAGENT} -k > /dev/null 61113908Sdesfi 62