diff options
Diffstat (limited to 'regress/cfgparse.sh')
-rw-r--r-- | regress/cfgparse.sh | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/regress/cfgparse.sh b/regress/cfgparse.sh new file mode 100644 index 000000000..736f38976 --- /dev/null +++ b/regress/cfgparse.sh | |||
@@ -0,0 +1,75 @@ | |||
1 | # $OpenBSD: cfgparse.sh,v 1.5 2015/05/29 03:05:13 djm Exp $ | ||
2 | # Placed in the Public Domain. | ||
3 | |||
4 | tid="config parse" | ||
5 | |||
6 | # This is a reasonable proxy for IPv6 support. | ||
7 | if ! config_defined HAVE_STRUCT_IN6_ADDR ; then | ||
8 | SKIP_IPV6=yes | ||
9 | fi | ||
10 | |||
11 | # We need to use the keys generated for the regression test because sshd -T | ||
12 | # will fail if we're not running with SUDO (no permissions for real keys) or | ||
13 | # if we are # running tests on a system that has never had sshd installed | ||
14 | # (keys won't exist). | ||
15 | |||
16 | grep "HostKey " $OBJ/sshd_config > $OBJ/sshd_config_minimal | ||
17 | SSHD_KEYS="`cat $OBJ/sshd_config_minimal`" | ||
18 | |||
19 | verbose "reparse minimal config" | ||
20 | ($SUDO ${SSHD} -T -f $OBJ/sshd_config_minimal >$OBJ/sshd_config.1 && | ||
21 | $SUDO ${SSHD} -T -f $OBJ/sshd_config.1 >$OBJ/sshd_config.2 && | ||
22 | diff $OBJ/sshd_config.1 $OBJ/sshd_config.2) || fail "reparse minimal config" | ||
23 | |||
24 | verbose "reparse regress config" | ||
25 | ($SUDO ${SSHD} -T -f $OBJ/sshd_config >$OBJ/sshd_config.1 && | ||
26 | $SUDO ${SSHD} -T -f $OBJ/sshd_config.1 >$OBJ/sshd_config.2 && | ||
27 | diff $OBJ/sshd_config.1 $OBJ/sshd_config.2) || fail "reparse regress config" | ||
28 | |||
29 | verbose "listenaddress order" | ||
30 | # expected output | ||
31 | cat > $OBJ/sshd_config.0 <<EOD | ||
32 | listenaddress 1.2.3.4:1234 | ||
33 | listenaddress 1.2.3.4:5678 | ||
34 | EOD | ||
35 | [ X${SKIP_IPV6} = Xyes ] || cat >> $OBJ/sshd_config.0 <<EOD | ||
36 | listenaddress [::1]:1234 | ||
37 | listenaddress [::1]:5678 | ||
38 | EOD | ||
39 | |||
40 | # test input sets. should all result in the output above. | ||
41 | # test 1: addressfamily and port first | ||
42 | cat > $OBJ/sshd_config.1 <<EOD | ||
43 | ${SSHD_KEYS} | ||
44 | addressfamily any | ||
45 | port 1234 | ||
46 | port 5678 | ||
47 | listenaddress 1.2.3.4 | ||
48 | EOD | ||
49 | [ X${SKIP_IPV6} = Xyes ] || cat >> $OBJ/sshd_config.1 <<EOD | ||
50 | listenaddress ::1 | ||
51 | EOD | ||
52 | |||
53 | ($SUDO ${SSHD} -T -f $OBJ/sshd_config.1 | \ | ||
54 | grep 'listenaddress ' >$OBJ/sshd_config.2 && | ||
55 | diff $OBJ/sshd_config.0 $OBJ/sshd_config.2) || \ | ||
56 | fail "listenaddress order 1" | ||
57 | # test 2: listenaddress first | ||
58 | cat > $OBJ/sshd_config.1 <<EOD | ||
59 | ${SSHD_KEYS} | ||
60 | listenaddress 1.2.3.4 | ||
61 | port 1234 | ||
62 | port 5678 | ||
63 | addressfamily any | ||
64 | EOD | ||
65 | [ X${SKIP_IPV6} = Xyes ] || cat >> $OBJ/sshd_config.1 <<EOD | ||
66 | listenaddress ::1 | ||
67 | EOD | ||
68 | |||
69 | ($SUDO ${SSHD} -T -f $OBJ/sshd_config.1 | \ | ||
70 | grep 'listenaddress ' >$OBJ/sshd_config.2 && | ||
71 | diff $OBJ/sshd_config.0 $OBJ/sshd_config.2) || \ | ||
72 | fail "listenaddress order 2" | ||
73 | |||
74 | # cleanup | ||
75 | rm -f $OBJ/sshd_config.[012] | ||