#!/bin/sh

if [ $# = 1 -o $# = 2 ]
then
	if [ "$1" = "kiddie" ]
	then
		PAXTEST_MODE=0
                shift
	elif [ "$1" = "blackhat" ]
	then
		PAXTEST_MODE=1
                shift
	else
		echo "usage: paxtest [kiddie|blackhat] [logfile]"
		exit 1
	fi
else
	echo "usage: paxtest [kiddie|blackhat] [logfile]"
	exit 1
fi

LOG=$HOME/paxtest.log
[ -n "$1" ]  && LOG=$1
export PAXTEST_MODE

if [ "${LD_LIBRARY_PATH}" = "" ]
then
	LD_LIBRARY_PATH=/usr/lib/paxtest
else
	LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/usr/lib/paxtest
fi
export LD_LIBRARY_PATH

cat <<__end__ | tee $LOG
PaXtest - Copyright(c) 2003,2004 by Peter Busser <peter@adamantix.org>
Released under the GNU Public Licence version 2 or later

__end__

echo -n "Mode: " >>$LOG
if [ "$PAXTEST_MODE" -eq 0 ] ; then
    echo -n "Kiddie" >>$LOG
fi
if [ "$PAXTEST_MODE" -eq 1 ] ; then
    echo -n "Blackhat" >>$LOG
fi
echo >>$LOG
uname -a >>$LOG
echo >>$LOG

echo "Writing output to $LOG"
echo 'It may take a while for the tests to complete'

for i in anonmap execbss execdata execheap execstack shlibbss shlibdata mprotanon mprotbss mprotdata mprotheap mprotstack mprotshbss mprotshdata writetext randamap randheap1 randheap2 randmain1 randmain2 randshlib randstack1 randstack2 rettofunc1 rettofunc2 rettofunc1x rettofunc2x
do
	/usr/lib/paxtest/$i
done >>$LOG 2>&1

echo "Test results:"
cat $LOG

echo

