Skip to content

Commit

Permalink
upstream: test some more Match syntax, including criteria=arg and
Browse files Browse the repository at this point in the history
negations

OpenBSD-Regress-ID: 67476baccc60bf1a255fd4e329ada950047b8b8d
  • Loading branch information
djmdjm committed Oct 14, 2024
1 parent 6072e4c commit 4617410
Show file tree
Hide file tree
Showing 3 changed files with 50 additions and 48 deletions.
14 changes: 7 additions & 7 deletions regress/cfginclude.sh
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# $OpenBSD: cfginclude.sh,v 1.4 2024/09/03 05:58:56 djm Exp $
# $OpenBSD: cfginclude.sh,v 1.5 2024/09/27 01:05:54 djm Exp $
# Placed in the Public Domain.

tid="config include"
Expand All @@ -10,15 +10,15 @@ cat > $OBJ/ssh_config.i << _EOF
Match host a
Hostname aa
Match host b # comment
Match host=b # comment
Hostname bb
Include $OBJ/ssh_config.i.*
Match host c
Include $OBJ/ssh_config.i.*
Hostname cc
Match host m
Match host=m !user xxxyfake
Include $OBJ/ssh_config.i.* # comment
Host d
Expand All @@ -41,7 +41,7 @@ Match host xxxxxx
_EOF

cat > $OBJ/ssh_config.i.1 << _EOF
Match host a
Match host=a
Hostname aaa
Match host b
Expand All @@ -64,10 +64,10 @@ cat > $OBJ/ssh_config.i.2 << _EOF
Match host a
Hostname aaaa
Match host b
Match host=b !user blahblahfake
Hostname bbbb
Match host c
Match host=c
Hostname cccc
Host d
Expand Down Expand Up @@ -142,7 +142,7 @@ trial a aa

# cleanup
rm -f $OBJ/ssh_config.i $OBJ/ssh_config.i.* $OBJ/ssh_config.out
# $OpenBSD: cfginclude.sh,v 1.4 2024/09/03 05:58:56 djm Exp $
# $OpenBSD: cfginclude.sh,v 1.5 2024/09/27 01:05:54 djm Exp $
# Placed in the Public Domain.

tid="config include"
Expand Down
70 changes: 36 additions & 34 deletions regress/cfgmatch.sh
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# $OpenBSD: cfgmatch.sh,v 1.13 2021/06/08 06:52:43 djm Exp $
# $OpenBSD: cfgmatch.sh,v 1.14 2024/09/27 01:05:54 djm Exp $
# Placed in the Public Domain.

tid="sshd_config match"
Expand Down Expand Up @@ -26,7 +26,7 @@ start_client()
kill $client_pid
fatal "timeout waiting for background ssh"
fi
done
done
}

stop_client()
Expand Down Expand Up @@ -119,40 +119,42 @@ stop_client
# requires knowledge of actual group memberships user running the test).
params="user:user:u1 host:host:h1 address:addr:1.2.3.4 \
localaddress:laddr:5.6.7.8 rdomain:rdomain:rdom1"
cp $OBJ/sshd_proxy_bak $OBJ/sshd_config
echo 'Banner /nomatch' >>$OBJ/sshd_config
for i in $params; do
config=`echo $i | cut -f1 -d:`
criteria=`echo $i | cut -f2 -d:`
value=`echo $i | cut -f3 -d:`
cat >>$OBJ/sshd_config <<EOD
Match $config $value
Banner /$value
for separator in " " "=" ; do
cp $OBJ/sshd_proxy_bak $OBJ/sshd_config
echo 'Banner /nomatch' >>$OBJ/sshd_config
for i in $params; do
config=`echo $i | cut -f1 -d:`
criteria=`echo $i | cut -f2 -d:`
value=`echo $i | cut -f3 -d:`
cat >>$OBJ/sshd_config <<EOD
Match ${config}${separator}${value}
Banner /$value
EOD
done
done

${SUDO} ${SSHD} -f $OBJ/sshd_config -T >/dev/null || \
fail "validate config for w/out spec"

# Test matching each criteria.
for i in $params; do
testcriteria=`echo $i | cut -f2 -d:`
expected=/`echo $i | cut -f3 -d:`
spec=""
for j in $params; do
config=`echo $j | cut -f1 -d:`
criteria=`echo $j | cut -f2 -d:`
value=`echo $j | cut -f3 -d:`
if [ "$criteria" = "$testcriteria" ]; then
spec="$criteria=$value,$spec"
else
spec="$criteria=1$value,$spec"
${SUDO} ${SSHD} -f $OBJ/sshd_config -T >/dev/null || \
fail "validate config for w/out spec"

# Test matching each criteria.
for i in $params; do
testcriteria=`echo $i | cut -f2 -d:`
expected=/`echo $i | cut -f3 -d:`
spec=""
for j in $params; do
config=`echo $j | cut -f1 -d:`
criteria=`echo $j | cut -f2 -d:`
value=`echo $j | cut -f3 -d:`
if [ "$criteria" = "$testcriteria" ]; then
spec="$criteria=$value,$spec"
else
spec="$criteria=1$value,$spec"
fi
done
trace "test spec $spec"
result=`${SUDO} ${SSHD} -f $OBJ/sshd_config -T -C "$spec" | \
awk '$1=="banner"{print $2}'`
if [ "$result" != "$expected" ]; then
fail "match $config expected $expected got $result"
fi
done
trace "test spec $spec"
result=`${SUDO} ${SSHD} -f $OBJ/sshd_config -T -C "$spec" | \
awk '$1=="banner"{print $2}'`
if [ "$result" != "$expected" ]; then
fail "match $config expected $expected got $result"
fi
done
14 changes: 7 additions & 7 deletions regress/servcfginclude.sh
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,14 @@ tid="server config include"

cat > $OBJ/sshd_config.i << _EOF
HostKey $OBJ/host.ssh-ed25519
Match host a
Match host=a
Banner /aa
Match host b
Banner /bb
Include $OBJ/sshd_config.i.* # comment
Match host c
Match host=c
Include $OBJ/sshd_config.i.* # comment
Banner /cc
Expand All @@ -25,7 +25,7 @@ Match Host e
Banner /ee
Include $OBJ/sshd_config.i.*
Match Host f
Match Host=f
Include $OBJ/sshd_config.i.*
Banner /ff
Expand All @@ -47,27 +47,27 @@ Match host b
Match host c
Banner /ccc
Match Host d
Match Host=d
Banner /ddd
Match Host e
Banner /eee
Match Host f
Match Host=f
Banner /fff
_EOF

cat > $OBJ/sshd_config.i.2 << _EOF
Match host a
Banner /aaaa
Match host b
Match host=b
Banner /bbbb
Match host c # comment
Banner /cccc
Match Host d
Match Host=d
Banner /dddd
Match Host e
Expand Down

0 comments on commit 4617410

Please sign in to comment.