Make the openssl command configurable in sh tests
diff --git a/tests/compat.sh b/tests/compat.sh
index 860858c..16c93c7 100755
--- a/tests/compat.sh
+++ b/tests/compat.sh
@@ -7,10 +7,14 @@
 let "failed = 0"
 let "skipped = 0"
 
+# default values, can be overriden by the environment
+: ${P_SRV:=../programs/ssl/ssl_server2}
+: ${P_CLI:=../programs/ssl/ssl_client2}
+: ${OPENSSL:=openssl}
+
 MODES="ssl3 tls1 tls1_1 tls1_2"
 VERIFIES="NO YES"
 TYPES="ECDSA RSA PSK"
-OPENSSL=openssl
 FILTER=""
 VERBOSE=""
 
@@ -447,7 +451,7 @@
             SERVER_CMD="$OPENSSL s_server $O_SERVER_ARGS"
             ;;
         [Pp]olar*)
-            SERVER_CMD="../programs/ssl/ssl_server2 $P_SERVER_ARGS"
+            SERVER_CMD="$P_SRV $P_SERVER_ARGS"
             ;;
         *)
             echo "error: invalid server name: $1" >&2
@@ -519,7 +523,7 @@
             ;;
 
         [Pp]olar*)
-            CLIENT_CMD="../programs/ssl/ssl_client2 $P_CLIENT_ARGS force_ciphersuite=$2"
+            CLIENT_CMD="$P_CLI $P_CLIENT_ARGS force_ciphersuite=$2"
             log "$CLIENT_CMD"
             $CLIENT_CMD > cli_out
             EXIT=$?
@@ -563,6 +567,20 @@
 # MAIN
 #
 
+# sanity checks, avoid an avalanche of errors
+if [ ! -x "$P_SRV" ]; then
+    echo "Command '$P_SRV' is not an executable file"
+    exit 1
+fi
+if [ ! -x "$P_CLI" ]; then
+    echo "Command '$P_CLI' is not an executable file"
+    exit 1
+fi
+if which $OPENSSL >/dev/null 2>&1; then :; else
+    echo "Command '$OPENSSL' not found"
+    exit 1
+fi
+
 get_options "$@"
 
 killall -q openssl ssl_server ssl_server2