#!/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 randarg1 randarg2 randexhaust1 randexhaust2 rettofunc1 rettofunc2 rettofunc1x rettofunc2x
do
	/usr/lib/paxtest/$i
done >>$LOG 2>&1

echo "Test results:"
cat $LOG

echo

