Index: trunk/test/test.sh
===================================================================
--- trunk/test/test.sh	(revision 29)
+++ trunk/test/test.sh	(revision 30)
@@ -19,4 +19,93 @@
 # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 #
+
+# -----------------------------------------------------------------------
+# Be Bourne compatible
+# -----------------------------------------------------------------------
+
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=:
+elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
+  set -o posix
+fi
+
+# -----------------------------------------------------------------------
+# Make sure we support functions (from the autoconf manual)
+# -----------------------------------------------------------------------
+
+TSHELL="${TSHELL-/bin/sh}"
+if test x"$1" = "x--re-executed" 
+then
+    shift
+elif "$TSHELL" -c 'foo () { (exit 0); exit 0; }; foo' >/dev/null 2>&1
+then
+    :
+else
+    for cmd in sh bash ash bsh ksh zsh sh5; do
+	X="$PATH:/bin:/usr/bin:/usr/afsws/bin:/usr/ucb:/usr/xpg4/bin";
+	OLD_IFS=${IFS}
+	IFS=':'; export IFS 
+	for dir in $X; do
+	    shell="$dir/$cmd"
+	    if (test -f "$shell" || test -f "$shell.exe")
+	    then
+	        if "$shell" -c  'foo () { (exit 0); exit 0; }; foo' >/dev/null 2>&1
+		then
+		    TSHELL="$shell"; export TSHELL
+		    IFS=${OLD_IFS}; export IFS
+		    exec "$shell" "$0" --re-executed ${1+"$@"}
+		fi
+	    fi
+	done
+	IFS=${OLD_IFS}; export IFS
+    done
+    echo "-----------------------------------------------------------------"
+    echo "ERROR: Unable to locate a shell interpreter with function support" >&2
+    echo "-----------------------------------------------------------------"
+    { (exit 1); exit 1; }
+fi
+
+# -----------------------------------------------------------------------
+# Make sure we support 'let' (from the autoconf manual)
+# -----------------------------------------------------------------------
+
+TSHELL="${TSHELL-/bin/sh}"
+if test x"$1" = "x--re-run" 
+then
+    shift
+elif "$TSHELL" -c 'a=5; let "a = a + 5"' >/dev/null 2>&1
+then
+    :
+else
+    for cmd in sh bash ash bsh ksh zsh sh5; do
+	X="$PATH:/bin:/usr/bin:/usr/afsws/bin:/usr/ucb:/usr/xpg4/bin";
+	OLD_IFS=${IFS}
+	IFS=':'; export IFS 
+	for dir in $X; do
+	    shell="$dir/$cmd"
+	    if (test -f "$shell" || test -f "$shell.exe")
+	    then
+	        if "$shell" -c  'foo () { (exit 0); exit 0; }; foo' >/dev/null 2>&1
+		then
+		    if "$shell" -c  'a=5; let "a = a + 5"' >/dev/null 2>&1
+		    then
+			TSHELL="$shell"; export TSHELL
+			IFS=${OLD_IFS}; export IFS
+			exec "$shell" "$0" --re-run ${1+"$@"}
+		    fi
+		fi
+	    fi
+	done
+	IFS=${OLD_IFS}; export IFS
+    done
+    echo "-----------------------------------------------------------------"
+    echo "ERROR: Unable to locate a shell interpreter with support for 'let'" >&2
+    echo "-----------------------------------------------------------------"
+    { (exit 1); exit 1; }
+fi
+
+
+umask 0022
 
 isok=`test -t 1 2>&1 | wc -c`
@@ -366,5 +455,13 @@
 	tmp="localhost"
     fi
-    echo "$tmp"
+    #
+    # first one is hostname, others are aliases
+    #
+    tmp2=`cat /etc/hosts | egrep "^ *[0123456789].* $tmp" | awk '{ print $2 }'`
+    if [ -z "$tmp2" ]; then
+	echo "$tmp"
+    else
+	echo "$tmp2"
+    fi
 }
 
Index: trunk/test/testcompile.sh
===================================================================
--- trunk/test/testcompile.sh	(revision 29)
+++ trunk/test/testcompile.sh	(revision 30)
@@ -20,5 +20,18 @@
 #
 
-MAXTEST=56; export MAXTEST
+MAXTEST=57; export MAXTEST
+
+run_flawfinder ()
+{
+    flawfinder --minlevel=3 --quiet src/s*.c | \
+	egrep '^No hits found.' >/dev/null 2>&1
+    if [ $? -eq 0 ]; then
+	[ -z "$quiet" ] &&     log_ok   $2 ${MAXTEST} "$TEST";
+    else
+	flawfinder --minlevel=3 --quiet src/s*.c >test_log 2>&1
+	[ -z "$quiet" ] && log_fail $2 ${MAXTEST} "$TEST";
+	return 1
+    fi
+}
 
 run_smatch () 
@@ -133,4 +146,20 @@
 
 	#
+	# test flawfinder
+	#
+        TEST="${S}check w/flawfinder${E}"
+	#
+	#
+	let "num = num + 1" >/dev/null
+	FLAWFINDER=`find_path flawfinder`
+	#
+	if [ -z "$FLAWFINDER" ]; then
+	    log_skip $num $MAXTEST 'check w/flawfinder (not in PATH)'
+	else
+	    run_flawfinder 0 $num || let "numfail = numfail + 1"  >/dev/null
+	fi
+	#
+
+	#
 	# test standalone compilation
 	#
Index: trunk/test/testext.sh
===================================================================
--- trunk/test/testext.sh	(revision 29)
+++ trunk/test/testext.sh	(revision 30)
@@ -58,5 +58,5 @@
 	if test x$? = x0; then
 	    [ -z "$verbose" ] ||     log_msg_ok "configure..."; 
-	    $MAKE  > /dev/null
+	    $MAKE  >/dev/null 2>>test_log
 	    if test x$? = x0; then
 		[ -z "$verbose" ] || log_msg_ok "make..."; 
Index: trunk/test/testrun_1.sh
===================================================================
--- trunk/test/testrun_1.sh	(revision 29)
+++ trunk/test/testrun_1.sh	(revision 30)
@@ -82,6 +82,6 @@
     REPLACEMENT='FileCheckScheduleOne = 6 12 * * *'
     ex $RCFILE <<EOF
-:%s/${ORIGINAL}/${REPLACEMENT}/g
-:wq
+%s/${ORIGINAL}/${REPLACEMENT}/g
+wq
 EOF
 }
@@ -865,7 +865,10 @@
 	    return 1
 	fi
-	tmp=`./samhain -j -L $LOGFILE | grep ERR | wc -l`
+	#
+	# wtmp may not be readable
+	#
+	tmp=`./samhain -j -L $LOGFILE | grep ERR | grep -v wtmp | wc -l`
 	if [ $tmp -ne 0 ]; then
-	    [ -z "$verbose" ] || log_msg_fail "update not successful(?)";
+	    [ -z "$verbose" ] || log_msg_fail "errors during check";
 	    return 1
 	fi
@@ -889,9 +892,11 @@
 prep_testdata ()
 {
-    if [ -d "${BASE}" ]; then
-	chmod -R 0700 "${BASE}" || {
-	    [ -z "$quiet" ] &&   log_msg_fail "chmod -R 0700 ${BASE}"; 
-	    return 1;
-	}
+    if test -d "$BASE"; then
+	if [ -d "${BASE}" ]; then
+	    chmod -R 0700 "${BASE}" || {
+		[ -z "$quiet" ] &&   log_msg_fail "chmod -R 0700 ${BASE}"; 
+		return 1;
+	    }
+	fi
     fi
 
@@ -947,5 +952,5 @@
 	if test x$? = x0; then
 		[ -z "$verbose" ] ||     log_msg_ok "configure..."; 
-		$MAKE  > /dev/null
+		$MAKE  >/dev/null 2>>test_log
 		if test x$? = x0; then
 		    [ -z "$verbose" ] || log_msg_ok "make..."; 
Index: trunk/test/testrun_1c.sh
===================================================================
--- trunk/test/testrun_1c.sh	(revision 29)
+++ trunk/test/testrun_1c.sh	(revision 30)
@@ -255,5 +255,5 @@
 	if test x$? = x0; then
 		[ -z "$verbose" ] ||     log_msg_ok "configure..."; 
-		$MAKE  'DBGDEF=-DSH_SUIDTESTDIR=\"${BASE}\"' >/dev/null
+		$MAKE  'DBGDEF=-DSH_SUIDTESTDIR=\"${BASE}\"' >/dev/null 2>&1
 		if test x$? = x0; then
 		    [ -z "$verbose" ] || log_msg_ok "make..."; 
Index: trunk/test/testrun_2.sh
===================================================================
--- trunk/test/testrun_2.sh	(revision 29)
+++ trunk/test/testrun_2.sh	(revision 30)
@@ -138,6 +138,6 @@
 	REPLACEMENT="UseSeparateLogs=yes"
         ex $RCFILE <<EOF
-:%s/$ORIGINAL/$REPLACEMENT/g
-:wq
+%s/$ORIGINAL/$REPLACEMENT/g
+wq
 EOF
 # :%s is the "ex" substitution command.
@@ -182,5 +182,10 @@
 	    CLIENTLOG="${LOGFILE}.${remhost}"
 	else
-	    CLIENTLOG=`ls -1 ${LOGFILE}.* 2>/dev/null | tail -n 1`
+	    tail -n 1 ${SCRIPTDIR}/test.sh >/dev/null 2>&1
+	    if [ $? -eq 0 ]; then
+		CLIENTLOG=`ls -1 ${LOGFILE}.* 2>/dev/null | tail -n 1`
+	    else
+		CLIENTLOG=`ls -1 ${LOGFILE}.* 2>/dev/null | tail -1`
+	    fi
 	fi
 
@@ -235,9 +240,9 @@
 	REPLACEMENT_4="SetClientTimeLimit=20"
         ex $RCFILE <<EOF
-:%s/${ORIGINAL_1}/${REPLACEMENT_1}/g
-:%s/${ORIGINAL_2}/${REPLACEMENT_2}/g
-:%s/${ORIGINAL_3}/${REPLACEMENT_3}/g
-:%s/${ORIGINAL_4}/${REPLACEMENT_4}/g
-:wq
+%s/${ORIGINAL_1}/${REPLACEMENT_1}/g
+%s/${ORIGINAL_2}/${REPLACEMENT_2}/g
+%s/${ORIGINAL_3}/${REPLACEMENT_3}/g
+%s/${ORIGINAL_4}/${REPLACEMENT_4}/g
+wq
 EOF
 # :%s is the "ex" substitution command.
@@ -336,6 +341,6 @@
 	REPLACEMENT_1="SetSocketAllowUid=$me"
         ex $RCFILE <<EOF
-:%s/${ORIGINAL_1}/${REPLACEMENT_1}/g
-:wq
+%s/${ORIGINAL_1}/${REPLACEMENT_1}/g
+wq
 EOF
 
@@ -435,4 +440,6 @@
 
 	kill ${PROC_Y}
+	sleep 2
+	kill -9 ${PROC_Y} >/dev/null 2>&1
 
 	[ -z "$VALGRIND" ] || {
@@ -633,5 +640,5 @@
 	#
 	cp samhain samhain.build || return 1
-	make clean >/dev/null || return 1
+	$MAKE clean >/dev/null || return 1
 
 	${TOP_SRCDIR}/configure --quiet  $TRUST --enable-debug --enable-network=server  --enable-xml-log --enable-login-watch --prefix=$PW_DIR --localstatedir=$PW_DIR --with-config-file=${RCFILE}2  --with-log-file=${LOGFILE}2 --with-pid-file=$PW_DIR/.samhain_lock2 --with-html-file=${HTML}2 --with-state-dir=$PW_DIR --enable-encrypt=2 --with-port=49778
@@ -655,5 +662,5 @@
 	#
 	cp yule yule.2 || return 1
-	make clean >/dev/null || return 1
+	$MAKE clean >/dev/null || return 1
 
 	${TOP_SRCDIR}/configure --quiet  $TRUST --enable-debug --enable-network=server  --enable-xml-log --enable-login-watch --prefix=$PW_DIR --localstatedir=$PW_DIR --with-config-file=$RCFILE  --with-log-file=$LOGFILE --with-pid-file=$PW_DIR/.samhain_lock --with-html-file=$HTML --with-state-dir=$PW_DIR --enable-encrypt=2
Index: trunk/test/testrun_2a.sh
===================================================================
--- trunk/test/testrun_2a.sh	(revision 29)
+++ trunk/test/testrun_2a.sh	(revision 30)
@@ -25,5 +25,5 @@
 SERVER_BUILDOPTS="--quiet  $TRUST  --enable-network=server --prefix=$PW_DIR --localstatedir=$PW_DIR --with-config-file=REQ_FROM_SERVER$PW_DIR/testrc_2 --with-data-file=REQ_FROM_SERVER$PW_DIR/.samhain_file --with-logserver=${SH_LOCALHOST}  --with-log-file=$PW_DIR/.samhain_log --with-pid-file=$PW_DIR/.samhain_lock"; export SERVER_BUILDOPTS
 
-CLIENT_BUILDOPTS="--quiet  $TRUST --enable-debug --enable-network=client --enable-srp --prefix=$PW_DIR --localstatedir=$PW_DIR --with-config-file=REQ_FROM_SERVER$RCFILE --with-data-file=REQ_FROM_SERVER$PW_DIR/.samhain_file --with-logserver=localhost  --with-log-file=$LOGFILE --with-pid-file=$PW_DIR/.samhain_lock"; export CLIENT_BUILDOPTS
+CLIENT_BUILDOPTS="--quiet  $TRUST --enable-debug --enable-network=client --enable-srp --prefix=$PW_DIR --with-tmp-dir=$PW_DIR --localstatedir=$PW_DIR --with-config-file=REQ_FROM_SERVER$RCFILE --with-data-file=REQ_FROM_SERVER$PW_DIR/.samhain_file --with-logserver=localhost  --with-log-file=$LOGFILE --with-pid-file=$PW_DIR/.samhain_lock"; export CLIENT_BUILDOPTS
 
 do_test_1_a () {
@@ -131,5 +131,5 @@
 	#
 	cp samhain samhain.build || return 1
-	make clean >/dev/null || return 1
+	$MAKE clean >/dev/null || return 1
 
 	${TOP_SRCDIR}/configure ${SERVER_BUILDOPTS}
Index: trunk/test/testrun_2b.sh
===================================================================
--- trunk/test/testrun_2b.sh	(revision 29)
+++ trunk/test/testrun_2b.sh	(revision 30)
@@ -26,5 +26,5 @@
 SERVER_BUILDOPTS="--quiet  $TRUST  --enable-network=server --prefix=$PW_DIR --localstatedir=$PW_DIR --with-config-file=REQ_FROM_SERVER$PW_DIR/testrc_2 --with-data-file=REQ_FROM_SERVER$PW_DIR/.samhain_file --with-logserver=${SH_LOCALHOST}  --with-log-file=$PW_DIR/.samhain_log --with-pid-file=$PW_DIR/.samhain_lock"; export SERVER_BUILDOPTS
 
-CLIENT_BUILDOPTS="--quiet  $TRUST --enable-micro-stealth=137 --enable-debug --enable-network=client --enable-srp --prefix=$PW_DIR --localstatedir=$PW_DIR --with-config-file=REQ_FROM_SERVER${RCFILE_C} --with-data-file=REQ_FROM_SERVER$PW_DIR/.samhain_file --with-logserver=localhost  --with-log-file=$LOGFILE --with-pid-file=$PW_DIR/.samhain_lock"; export CLIENT_BUILDOPTS
+CLIENT_BUILDOPTS="--quiet  $TRUST --enable-micro-stealth=137 --enable-debug --enable-network=client --enable-srp --prefix=$PW_DIR --with-tmp-dir=$PW_DIR --localstatedir=$PW_DIR --with-config-file=REQ_FROM_SERVER${RCFILE_C} --with-data-file=REQ_FROM_SERVER$PW_DIR/.samhain_file --with-logserver=localhost  --with-log-file=$LOGFILE --with-pid-file=$PW_DIR/.samhain_lock"; export CLIENT_BUILDOPTS
 
 testrun2b_internal ()
@@ -80,5 +80,5 @@
 
     cp samhain samhain.build || return 1
-    make clean >/dev/null || return 1
+    $MAKE clean >/dev/null || return 1
     
     ${TOP_SRCDIR}/configure ${SERVER_BUILDOPTS}
Index: trunk/test/testrun_2c.sh
===================================================================
--- trunk/test/testrun_2c.sh	(revision 29)
+++ trunk/test/testrun_2c.sh	(revision 30)
@@ -22,5 +22,5 @@
 SERVER_BUILDOPTS="--quiet  $TRUST --enable-xml-log --enable-debug --enable-network=server --prefix=$PW_DIR --localstatedir=$PW_DIR --with-config-file=REQ_FROM_SERVER$PW_DIR/testrc_2 --with-data-file=REQ_FROM_SERVER$PW_DIR/.samhain_file --with-logserver=${SH_LOCALHOST}  --with-log-file=$PW_DIR/.samhain_log --with-pid-file=$PW_DIR/.samhain_lock --with-database=mysql"; export SERVER_BUILDOPTS
 
-CLIENT_BUILDOPTS="--quiet  $TRUST --prefix=$PW_DIR --localstatedir=$PW_DIR --enable-network=client --disable-mail --disable-external-scripts --enable-login-watch --enable-xml-log --enable-db-reload --with-logserver=localhost --with-config-file=REQ_FROM_SERVER$PW_DIR/testrc_2 --with-data-file=REQ_FROM_SERVER$PW_DIR/.samhain_file --with-log-file=$PW_DIR/.samhain_log --with-pid-file=$PW_DIR/.samhain_lock"; export CLIENT_BUILDOPTS
+CLIENT_BUILDOPTS="--quiet  $TRUST --prefix=$PW_DIR --with-tmp-dir=$PW_DIR --localstatedir=$PW_DIR --enable-network=client --disable-mail --disable-external-scripts --enable-login-watch --enable-xml-log --enable-db-reload --with-logserver=localhost --with-config-file=REQ_FROM_SERVER$PW_DIR/testrc_2 --with-data-file=REQ_FROM_SERVER$PW_DIR/.samhain_file --with-log-file=$PW_DIR/.samhain_log --with-pid-file=$PW_DIR/.samhain_lock"; export CLIENT_BUILDOPTS
 
 check_mysql_log () {
@@ -92,6 +92,6 @@
     REPLACEMENT="DatabaseSeverity=info"
     ex $RCFILE <<EOF
-:%s/$ORIGINAL/$REPLACEMENT/g
-:wq
+%s/$ORIGINAL/$REPLACEMENT/g
+wq
 EOF
     #
Index: trunk/test/testrun_2d.sh
===================================================================
--- trunk/test/testrun_2d.sh	(revision 29)
+++ trunk/test/testrun_2d.sh	(revision 30)
@@ -22,5 +22,5 @@
 SERVER_BUILDOPTS="--quiet  $TRUST --enable-xml-log --enable-debug --enable-network=server --prefix=$PW_DIR --localstatedir=$PW_DIR --with-config-file=REQ_FROM_SERVER$PW_DIR/testrc_2 --with-data-file=REQ_FROM_SERVER$PW_DIR/.samhain_file --with-logserver=${SH_LOCALHOST}  --with-log-file=$PW_DIR/.samhain_log --with-pid-file=$PW_DIR/.samhain_lock --with-database=postgresql"; export SERVER_BUILDOPTS
 
-CLIENT_BUILDOPTS="--quiet  $TRUST --prefix=$PW_DIR --localstatedir=$PW_DIR --enable-network=client --disable-mail --disable-external-scripts --enable-login-watch --enable-xml-log --enable-db-reload --with-logserver=localhost --with-config-file=REQ_FROM_SERVER$PW_DIR/testrc_2 --with-data-file=REQ_FROM_SERVER$PW_DIR/.samhain_file --with-log-file=$PW_DIR/.samhain_log --with-pid-file=$PW_DIR/.samhain_lock"; export CLIENT_BUILDOPTS
+CLIENT_BUILDOPTS="--quiet  $TRUST --prefix=$PW_DIR --with-tmp-dir=$PW_DIR --localstatedir=$PW_DIR --enable-network=client --disable-mail --disable-external-scripts --enable-login-watch --enable-xml-log --enable-db-reload --with-logserver=localhost --with-config-file=REQ_FROM_SERVER$PW_DIR/testrc_2 --with-data-file=REQ_FROM_SERVER$PW_DIR/.samhain_file --with-log-file=$PW_DIR/.samhain_log --with-pid-file=$PW_DIR/.samhain_lock"; export CLIENT_BUILDOPTS
 
 check_psql_log () {
@@ -94,6 +94,6 @@
     REPLACEMENT="DatabaseSeverity=info"
     ex $RCFILE <<EOF
-:%s/$ORIGINAL/$REPLACEMENT/g
-:wq
+%s/$ORIGINAL/$REPLACEMENT/g
+wq
 EOF
     #
Index: trunk/test/testtimesrv.sh
===================================================================
--- trunk/test/testtimesrv.sh	(revision 29)
+++ trunk/test/testtimesrv.sh	(revision 30)
@@ -30,8 +30,10 @@
 prep_testdata ()
 {
-    chmod -R 0700 "${BASE}" || {
-	[ -z "$quiet" ] &&   log_msg_fail "chmod -R 0700 ${BASE}"; 
-	return 1;
-    }
+    if test -d "$BASE"; then
+	chmod -R 0700 "${BASE}" || {
+	    [ -z "$quiet" ] &&   log_msg_fail "chmod -R 0700 ${BASE}"; 
+	    return 1;
+	}
+    fi
 
     rm -rf "${BASE}" || {
@@ -140,5 +142,5 @@
 	# standalone compilation
 	#
-	[ -z "$verbose" ] || { echo; echo "${S}Building standalone agent w/timeserver${E}"; echo; }
+	[ -z "$verbose" ] || { echo; echo "${S}Building standalone agent${E}"; echo; }
 	#
 	if test -r "Makefile"; then
@@ -150,5 +152,5 @@
 	if test x$? = x0; then
 		[ -z "$verbose" ] ||     log_msg_ok "configure..."; 
-		$MAKE  > /dev/null
+		$MAKE  > /dev/null 2>>test_log
 		if test x$? = x0; then
 		    [ -z "$verbose" ] || log_msg_ok "make..."; 
