summaryrefslogtreecommitdiff
path: root/debian/patches/regress-integrity-robust.patch
blob: 651a7a88ef1432e8e64d0e9c86d2cdc46621e231 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
From 7ce93c802065cd926e7cbfd10e629f3a2d352301 Mon Sep 17 00:00:00 2001
From: Colin Watson <cjwatson@debian.org>
Date: Sun, 1 Jan 2017 15:21:10 +0000
Subject: Make integrity tests more robust against timeouts

If the first test in a series for a given MAC happens to modify the low
bytes of a packet length, then ssh will time out and this will be
interpreted as a test failure.  Handle this failure mode.

Bug: https://bugzilla.mindrot.org/show_bug.cgi?id=2658
Patch-Name: regress-integrity-robust.patch

Last-Update: 2017-01-01
---
 regress/integrity.sh | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/regress/integrity.sh b/regress/integrity.sh
index 39d310de..fd7d58bc 100644
--- a/regress/integrity.sh
+++ b/regress/integrity.sh
@@ -5,8 +5,6 @@ tid="integrity"
 cp $OBJ/sshd_proxy $OBJ/sshd_proxy_bak
 
 # start at byte 2900 (i.e. after kex) and corrupt at different offsets
-# XXX the test hangs if we modify the low bytes of the packet length
-# XXX and ssh tries to read...
 tries=10
 startoffset=2900
 macs=`${SSH} -Q mac`
@@ -27,6 +25,7 @@ for m in $macs; do
 	elen=0
 	epad=0
 	emac=0
+	etmo=0
 	ecnt=0
 	skip=0
 	for off in `jot $tries $startoffset`; do
@@ -61,14 +60,16 @@ for m in $macs; do
 		Corrupted?MAC* | *message?authentication?code?incorrect*)
 				emac=`expr $emac + 1`; skip=0;;
 		padding*)	epad=`expr $epad + 1`; skip=0;;
+		*Timeout,?server*)
+				etmo=`expr $etmo + 1`; skip=0;;
 		*)		fail "unexpected error mac $m at $off: $out";;
 		esac
 	done
-	verbose "test $tid: $ecnt errors: mac $emac padding $epad length $elen"
+	verbose "test $tid: $ecnt errors: mac $emac padding $epad length $elen timeout $etmo"
 	if [ $emac -eq 0 ]; then
 		fail "$m: no mac errors"
 	fi
-	expect=`expr $ecnt - $epad - $elen`
+	expect=`expr $ecnt - $epad - $elen - $etmo`
 	if [ $emac -ne $expect ]; then
 		fail "$m: expected $expect mac errors, got $emac"
 	fi