From 3d9b0845f34510111cc693bb99a667662ca50cd8 Mon Sep 17 00:00:00 2001 From: "djm@openbsd.org" Date: Fri, 3 Jun 2022 04:31:54 +0000 Subject: [PATCH] upstream: test setenv in both client and server, test first-match-wins too OpenBSD-Regress-ID: 4c8804f9db38a02db480b9923317457b377fe34b --- regress/envpass.sh | 67 +++++++++++++++++++++++++++++++++++++++++++- regress/multiplex.sh | 16 +++++++++-- 2 files changed, 79 insertions(+), 4 deletions(-) diff --git a/regress/envpass.sh b/regress/envpass.sh index af7eafe3d..cb104686b 100644 --- a/regress/envpass.sh +++ b/regress/envpass.sh @@ -1,4 +1,4 @@ -# $OpenBSD: envpass.sh,v 1.4 2005/03/04 08:48:46 djm Exp $ +# $OpenBSD: envpass.sh,v 1.5 2022/06/03 04:31:54 djm Exp $ # Placed in the Public Domain. tid="environment passing" @@ -11,6 +11,7 @@ Host test-sendenv-confparse-bug SendEnv * EOF cat $OBJ/ssh_proxy >> $OBJ/ssh_proxy_envpass +cp $OBJ/sshd_proxy $OBJ/sshd_proxy_bak trace "pass env, don't accept" verbose "test $tid: pass env, don't accept" @@ -23,6 +24,18 @@ if [ $r -ne 0 ]; then fail "environment found" fi +trace "setenv, don't accept" +verbose "test $tid: setenv, don't accept" +${SSH} -oSendEnv="*" -F $OBJ/ssh_proxy_envpass -oSetEnv="_TEST_ENV=blah" \ + otherhost \ + sh << 'EOF' + test -z "$_TEST_ENV" +EOF +r=$? +if [ $r -ne 0 ]; then + fail "environment found" +fi + trace "don't pass env, accept" verbose "test $tid: don't pass env, accept" _XXX_TEST_A=1 _XXX_TEST_B=2 ${SSH} -F $OBJ/ssh_proxy_envpass otherhost \ @@ -57,4 +70,56 @@ if [ $r -ne 0 ]; then fail "environment not found" fi +trace "setenv, accept" +verbose "test $tid: setenv, accept" +${SSH} -F $OBJ/ssh_proxy_envpass \ + -oSetEnv="_XXX_TEST_A=1 _XXX_TEST_B=2" otherhost \ + sh << 'EOF' + test X"$_XXX_TEST_A" = X"1" -a X"$_XXX_TEST_B" = X"2" +EOF +r=$? +if [ $r -ne 0 ]; then + fail "environment not found" +fi +trace "setenv, first match wins" +verbose "test $tid: setenv, first match wins" +${SSH} -F $OBJ/ssh_proxy_envpass \ + -oSetEnv="_XXX_TEST_A=1 _XXX_TEST_A=11 _XXX_TEST_B=2" otherhost \ + sh << 'EOF' + test X"$_XXX_TEST_A" = X"1" -a X"$_XXX_TEST_B" = X"2" +EOF +r=$? +if [ $r -ne 0 ]; then + fail "environment not found" +fi + +trace "server setenv wins" +verbose "test $tid: server setenv wins" +cp $OBJ/sshd_proxy_bak $OBJ/sshd_proxy +echo "SetEnv _XXX_TEST_A=23" >> $OBJ/sshd_proxy +${SSH} -F $OBJ/ssh_proxy_envpass \ + -oSetEnv="_XXX_TEST_A=1 _XXX_TEST_B=2" otherhost \ + sh << 'EOF' + test X"$_XXX_TEST_A" = X"23" -a X"$_XXX_TEST_B" = X"2" +EOF +r=$? +if [ $r -ne 0 ]; then + fail "environment not found" +fi + +trace "server setenv first match wins" +verbose "test $tid: server setenv wins" +cp $OBJ/sshd_proxy_bak $OBJ/sshd_proxy +echo "SetEnv _XXX_TEST_A=23 _XXX_TEST_A=42" >> $OBJ/sshd_proxy +${SSH} -F $OBJ/ssh_proxy_envpass \ + -oSetEnv="_XXX_TEST_A=1 _XXX_TEST_B=2" otherhost \ + sh << 'EOF' + test X"$_XXX_TEST_A" = X"23" -a X"$_XXX_TEST_B" = X"2" +EOF +r=$? +if [ $r -ne 0 ]; then + fail "environment not found" +fi + + rm -f $OBJ/ssh_proxy_envpass diff --git a/regress/multiplex.sh b/regress/multiplex.sh index 4744fa3d9..2950d955a 100644 --- a/regress/multiplex.sh +++ b/regress/multiplex.sh @@ -1,4 +1,4 @@ -# $OpenBSD: multiplex.sh,v 1.33 2020/06/24 15:16:23 markus Exp $ +# $OpenBSD: multiplex.sh,v 1.34 2022/06/03 04:31:54 djm Exp $ # Placed in the Public Domain. make_tmpdir @@ -38,8 +38,8 @@ start_mux_master() start_mux_master -verbose "test $tid: envpass" -trace "env passing over multiplexed connection" +verbose "test $tid: setenv" +trace "setenv over multiplexed connection" _XXX_TEST=blah ${SSH} -F $OBJ/ssh_config -oSendEnv="_XXX_TEST" -S$CTL otherhost sh << 'EOF' test X"$_XXX_TEST" = X"blah" EOF @@ -47,6 +47,16 @@ if [ $? -ne 0 ]; then fail "environment not found" fi +verbose "test $tid: envpass" +trace "env passing over multiplexed connection" +${SSH} -F $OBJ/ssh_config -oSetEnv="_XXX_TEST=foo" -S$CTL otherhost sh << 'EOF' + test X"$_XXX_TEST" = X"foo" +EOF +if [ $? -ne 0 ]; then + fail "environment not found" +fi + + verbose "test $tid: transfer" rm -f ${COPY} trace "ssh transfer over multiplexed connection and check result"