aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore1
-rw-r--r--configure.ac1
-rw-r--r--src/test/include.am7
-rw-r--r--src/test/test_zero_length_keys.sh.in10
-rwxr-xr-xsrc/test/zero_length_keys.sh20
5 files changed, 30 insertions, 9 deletions
diff --git a/.gitignore b/.gitignore
index 912b06e2c5..5fc000f1ab 100644
--- a/.gitignore
+++ b/.gitignore
@@ -174,6 +174,7 @@ cscope.*
/src/test/test-child.exe
/src/test/test-ntor-cl.exe
/src/test/test_workqueue.exe
+/src/test/test_zero_length_keys.sh
# /src/tools/
/src/tools/tor-checkkey
diff --git a/configure.ac b/configure.ac
index 2c9c7a343f..32afc1b6b5 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1662,6 +1662,7 @@ AC_CONFIG_FILES([
src/config/torrc.minimal
scripts/maint/checkOptionDocs.pl
scripts/maint/updateVersions.pl
+ src/test/test_zero_length_keys.sh
])
if test x$asciidoc = xtrue && test "$ASCIIDOC" = "none" ; then
diff --git a/src/test/include.am b/src/test/include.am
index c857ec2f89..eba13abd24 100644
--- a/src/test/include.am
+++ b/src/test/include.am
@@ -1,4 +1,8 @@
-TESTS += src/test/test src/test/test-slow src/test/test-memwipe
+TESTS += src/test/test src/test/test-slow src/test/test-memwipe \
+ src/test/test_zero_length_keys.sh
+
+TEST_EXTENSIONS = .sh
+SH_LOG_COMPILER = $(SHELL)
noinst_PROGRAMS+= src/test/bench
if UNITTESTS_ENABLED
@@ -170,7 +174,6 @@ if USEPYTHON
$(top_builddir)/src/test/test-bt-cl assert | $(PYTHON) $(top_srcdir)/src/test/bt_test.py
$(top_builddir)/src/test/test-bt-cl crash | $(PYTHON) $(top_srcdir)/src/test/bt_test.py
endif
- $(SHELL) $(top_srcdir)/src/test/zero_length_keys.sh
EXTRA_DIST += \
src/test/bt_test.py \
diff --git a/src/test/test_zero_length_keys.sh.in b/src/test/test_zero_length_keys.sh.in
new file mode 100644
index 0000000000..47467baa44
--- /dev/null
+++ b/src/test/test_zero_length_keys.sh.in
@@ -0,0 +1,10 @@
+#!/bin/sh
+# Check that tor regenerates keys when key files are zero-length
+
+exitcode=0
+
+@SHELL@ @abs_top_srcdir@/src/test/zero_length_keys.sh "@builddir@/src/or/tor" -z || exitcode=1
+@SHELL@ @abs_top_srcdir@/src/test/zero_length_keys.sh "@builddir@/src/or/tor" -d || exitcode=1
+@SHELL@ @abs_top_srcdir@/src/test/zero_length_keys.sh "@builddir@/src/or/tor" -e || exitcode=1
+
+exit ${exitcode}
diff --git a/src/test/zero_length_keys.sh b/src/test/zero_length_keys.sh
index 2fd11d38bd..3c61f8d465 100755
--- a/src/test/zero_length_keys.sh
+++ b/src/test/zero_length_keys.sh
@@ -3,13 +3,13 @@
# Test for bug #13111 - Tor fails to start if onion keys are zero length
#
# Usage:
-# ./zero_length_keys.sh
+# ./zero_length_keys.sh PATH_TO_TOR
# Run all the tests below
-# ./zero_length_keys.sh -z
+# ./zero_length_keys.sh PATH_TO_TOR -z
# Check tor will launch and regenerate zero-length keys
-# ./zero_length_keys.sh -d
+# ./zero_length_keys.sh PATH_TO_TOR -d
# Check tor regenerates deleted keys (existing behaviour)
-# ./zero_length_keys.sh -e
+# ./zero_length_keys.sh PATH_TO_TOR -e
# Check tor does not overwrite existing keys (existing behaviour)
#
# Exit Statuses:
@@ -19,10 +19,16 @@
# 3: a command failed - the test could not be completed
#
-if [ $# -lt 1 ]; then
+if [ $# -eq 0 ] || [ ! -f ${1} ] || [ ! -x ${1} ]; then
+ echo "Usage: ${0} PATH_TO_TOR [-z|-d|-e]"
+ exit 1
+elif [ $# -eq 1 ]; then
echo "Testing that tor correctly handles zero-length keys"
- "$0" -z && "$0" -d && "$0" -e
+ "$0" "${1}" -z && "$0" "${1}" -d && "$0" "${1}" -e
exit $?
+else #[$# -gt 1 ]; then
+ TOR_BINARY="${1}"
+ shift
fi
DATA_DIR=`mktemp -d -t tor_zero_length_keys.XXXXXX`
@@ -40,7 +46,7 @@ touch "$DATA_DIR"/empty_torrc
# DisableNetwork means that the ORPort won't actually be opened.
# 'ExitRelay 0' suppresses a warning.
-TOR="./src/or/tor --hush --DisableNetwork 1 --ShutdownWaitLength 0 --ORPort 12345 --ExitRelay 0 -f $DATA_DIR/empty_torrc"
+TOR="${TOR_BINARY} --hush --DisableNetwork 1 --ShutdownWaitLength 0 --ORPort 12345 --ExitRelay 0 -f $DATA_DIR/empty_torrc"
if [ -s "$DATA_DIR"/keys/secret_id_key ] && [ -s "$DATA_DIR"/keys/secret_onion_key ] &&
[ -s "$DATA_DIR"/keys/secret_onion_key_ntor ]; then