summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordtucker@openbsd.org <dtucker@openbsd.org>2017-01-06 02:09:25 +0000
committerDamien Miller <djm@mindrot.org>2017-01-30 11:08:18 +1100
commitdbaf599b61bd6e0f8469363a8c8e7f633b334018 (patch)
tree3d5add42ebdaaa8da6f38fc1599f91b14950436d
parent9390b0031ebd6eb5488d3bc4d4333c528dffc0a6 (diff)
upstream commit
Make forwarding test less racy by using unix domain sockets instead of TCP ports where possible. Patch from cjwatson at debian.org via bz#2659. Upstream-Regress-ID: 4756375aac5916ef9d25452a1c1d5fa9e90299a9
-rw-r--r--regress/forwarding.sh34
1 files changed, 20 insertions, 14 deletions
diff --git a/regress/forwarding.sh b/regress/forwarding.sh
index 2539db9b7..617ac6323 100644
--- a/regress/forwarding.sh
+++ b/regress/forwarding.sh
@@ -1,4 +1,4 @@
1# $OpenBSD: forwarding.sh,v 1.16 2016/04/14 23:57:17 djm Exp $ 1# $OpenBSD: forwarding.sh,v 1.17 2017/01/06 02:09:25 dtucker Exp $
2# Placed in the Public Domain. 2# Placed in the Public Domain.
3 3
4tid="local and remote forwarding" 4tid="local and remote forwarding"
@@ -11,7 +11,6 @@ base=33
11last=$PORT 11last=$PORT
12fwd="" 12fwd=""
13CTL=$OBJ/ctl-sock 13CTL=$OBJ/ctl-sock
14rm -f $CTL
15 14
16for j in 0 1 2; do 15for j in 0 1 2; do
17 for i in 0 1 2; do 16 for i in 0 1 2; do
@@ -29,7 +28,8 @@ for p in ${SSH_PROTOCOLS}; do
29 q=$p 28 q=$p
30 fi 29 fi
31 trace "start forwarding, fork to background" 30 trace "start forwarding, fork to background"
32 ${SSH} -$p -F $OBJ/ssh_config -f $fwd somehost sleep 10 31 rm -f $CTL
32 ${SSH} -S $CTL -M -$p -F $OBJ/ssh_config -f $fwd somehost sleep 10
33 33
34 trace "transfer over forwarded channels and check result" 34 trace "transfer over forwarded channels and check result"
35 ${SSH} -$q -F $OBJ/ssh_config -p$last -o 'ConnectionAttempts=4' \ 35 ${SSH} -$q -F $OBJ/ssh_config -p$last -o 'ConnectionAttempts=4' \
@@ -37,7 +37,7 @@ for p in ${SSH_PROTOCOLS}; do
37 test -s ${COPY} || fail "failed copy of ${DATA}" 37 test -s ${COPY} || fail "failed copy of ${DATA}"
38 cmp ${DATA} ${COPY} || fail "corrupted copy of ${DATA}" 38 cmp ${DATA} ${COPY} || fail "corrupted copy of ${DATA}"
39 39
40 sleep 10 40 ${SSH} -S $CTL -O exit somehost
41done 41done
42 42
43for p in ${SSH_PROTOCOLS}; do 43for p in ${SSH_PROTOCOLS}; do
@@ -75,7 +75,8 @@ for p in ${SSH_PROTOCOLS}; do
75 ${SSH} -$p -F $OBJ/ssh_config -oClearAllForwardings=yes somehost true 75 ${SSH} -$p -F $OBJ/ssh_config -oClearAllForwardings=yes somehost true
76 76
77 trace "clear local forward proto $p" 77 trace "clear local forward proto $p"
78 ${SSH} -$p -f -F $OBJ/ssh_config -L ${base}01:127.0.0.1:$PORT \ 78 rm -f $CTL
79 ${SSH} -S $CTL -M -$p -f -F $OBJ/ssh_config -L ${base}01:127.0.0.1:$PORT \
79 -oClearAllForwardings=yes somehost sleep 10 80 -oClearAllForwardings=yes somehost sleep 10
80 if [ $? != 0 ]; then 81 if [ $? != 0 ]; then
81 fail "connection failed with cleared local forwarding" 82 fail "connection failed with cleared local forwarding"
@@ -85,10 +86,11 @@ for p in ${SSH_PROTOCOLS}; do
85 >>$TEST_REGRESS_LOGFILE 2>&1 && \ 86 >>$TEST_REGRESS_LOGFILE 2>&1 && \
86 fail "local forwarding not cleared" 87 fail "local forwarding not cleared"
87 fi 88 fi
88 sleep 10 89 ${SSH} -S $CTL -O exit somehost
89 90
90 trace "clear remote forward proto $p" 91 trace "clear remote forward proto $p"
91 ${SSH} -$p -f -F $OBJ/ssh_config -R ${base}01:127.0.0.1:$PORT \ 92 rm -f $CTL
93 ${SSH} -S $CTL -M -$p -f -F $OBJ/ssh_config -R ${base}01:127.0.0.1:$PORT \
92 -oClearAllForwardings=yes somehost sleep 10 94 -oClearAllForwardings=yes somehost sleep 10
93 if [ $? != 0 ]; then 95 if [ $? != 0 ]; then
94 fail "connection failed with cleared remote forwarding" 96 fail "connection failed with cleared remote forwarding"
@@ -98,7 +100,7 @@ for p in ${SSH_PROTOCOLS}; do
98 >>$TEST_REGRESS_LOGFILE 2>&1 && \ 100 >>$TEST_REGRESS_LOGFILE 2>&1 && \
99 fail "remote forwarding not cleared" 101 fail "remote forwarding not cleared"
100 fi 102 fi
101 sleep 10 103 ${SSH} -S $CTL -O exit somehost
102done 104done
103 105
104for p in 2; do 106for p in 2; do
@@ -115,6 +117,7 @@ echo "LocalForward ${base}01 127.0.0.1:$PORT" >> $OBJ/ssh_config
115echo "RemoteForward ${base}02 127.0.0.1:${base}01" >> $OBJ/ssh_config 117echo "RemoteForward ${base}02 127.0.0.1:${base}01" >> $OBJ/ssh_config
116for p in ${SSH_PROTOCOLS}; do 118for p in ${SSH_PROTOCOLS}; do
117 trace "config file: start forwarding, fork to background" 119 trace "config file: start forwarding, fork to background"
120 rm -f $CTL
118 ${SSH} -S $CTL -M -$p -F $OBJ/ssh_config -f somehost sleep 10 121 ${SSH} -S $CTL -M -$p -F $OBJ/ssh_config -f somehost sleep 10
119 122
120 trace "config file: transfer over forwarded channels and check result" 123 trace "config file: transfer over forwarded channels and check result"
@@ -129,15 +132,18 @@ done
129for p in 2; do 132for p in 2; do
130 trace "transfer over chained unix domain socket forwards and check result" 133 trace "transfer over chained unix domain socket forwards and check result"
131 rm -f $OBJ/unix-[123].fwd 134 rm -f $OBJ/unix-[123].fwd
132 ${SSH} -f -F $OBJ/ssh_config -R${base}01:[$OBJ/unix-1.fwd] somehost sleep 10 135 rm -f $CTL $CTL.[123]
133 ${SSH} -f -F $OBJ/ssh_config -L[$OBJ/unix-1.fwd]:[$OBJ/unix-2.fwd] somehost sleep 10 136 ${SSH} -S $CTL -M -f -F $OBJ/ssh_config -R${base}01:[$OBJ/unix-1.fwd] somehost sleep 10
134 ${SSH} -f -F $OBJ/ssh_config -R[$OBJ/unix-2.fwd]:[$OBJ/unix-3.fwd] somehost sleep 10 137 ${SSH} -S $CTL.1 -M -f -F $OBJ/ssh_config -L[$OBJ/unix-1.fwd]:[$OBJ/unix-2.fwd] somehost sleep 10
135 ${SSH} -f -F $OBJ/ssh_config -L[$OBJ/unix-3.fwd]:127.0.0.1:$PORT somehost sleep 10 138 ${SSH} -S $CTL.2 -M -f -F $OBJ/ssh_config -R[$OBJ/unix-2.fwd]:[$OBJ/unix-3.fwd] somehost sleep 10
139 ${SSH} -S $CTL.3 -M -f -F $OBJ/ssh_config -L[$OBJ/unix-3.fwd]:127.0.0.1:$PORT somehost sleep 10
136 ${SSH} -F $OBJ/ssh_config -p${base}01 -o 'ConnectionAttempts=4' \ 140 ${SSH} -F $OBJ/ssh_config -p${base}01 -o 'ConnectionAttempts=4' \
137 somehost cat ${DATA} > ${COPY} 141 somehost cat ${DATA} > ${COPY}
138 test -s ${COPY} || fail "failed copy ${DATA}" 142 test -s ${COPY} || fail "failed copy ${DATA}"
139 cmp ${DATA} ${COPY} || fail "corrupted copy of ${DATA}" 143 cmp ${DATA} ${COPY} || fail "corrupted copy of ${DATA}"
140 144
141 #wait 145 ${SSH} -S $CTL -O exit somehost
142 sleep 10 146 ${SSH} -S $CTL.1 -O exit somehost
147 ${SSH} -S $CTL.2 -O exit somehost
148 ${SSH} -S $CTL.3 -O exit somehost
143done 149done