]> git.ipfire.org Git - thirdparty/openssh-portable.git/commitdiff
upstream: add regression tests for scp for out-of-destination path file
authordjm@openbsd.org <djm@openbsd.org>
Fri, 19 Jul 2019 03:45:44 +0000 (03:45 +0000)
committerDamien Miller <djm@mindrot.org>
Fri, 19 Jul 2019 03:53:27 +0000 (13:53 +1000)
creation by Harry Sintonen via Jakub Jelen in bz3007

OpenBSD-Regress-ID: 01ae5fbc6ce400b2df5a84dc3152a9e31f354c07

regress/scp-ssh-wrapper.sh
regress/scp.sh

index 59f1ff63e6dadf016c4e124e14fe670a0d0ce2d0..7fb21f424ebdbf797962b1ac9ba3e5354fd45923 100644 (file)
@@ -1,5 +1,5 @@
 #!/bin/sh
-#       $OpenBSD: scp-ssh-wrapper.sh,v 1.3 2014/01/26 10:49:17 djm Exp $
+#       $OpenBSD: scp-ssh-wrapper.sh,v 1.4 2019/07/19 03:45:44 djm Exp $
 #       Placed in the Public Domain.
 
 printname () {
@@ -51,6 +51,18 @@ badserver_4)
        echo "C755 2 file"
        echo "X"
        ;;
+badserver_5)
+       echo "D0555 0 "
+       echo "X"
+       ;;
+badserver_6)
+       echo "D0555 0 ."
+       echo "X"
+       ;;
+badserver_7)
+       echo "C0755 2 extrafile"
+       echo "X"
+       ;;
 *)
        set -- $arg
        shift
index 57cc77066064d0ff64fc076dbd0d6e60d02bbb67..62400efad37e78984a80e0b3be3477bc0e1f0a0e 100644 (file)
@@ -1,4 +1,4 @@
-#      $OpenBSD: scp.sh,v 1.10 2014/01/26 10:49:17 djm Exp $
+#      $OpenBSD: scp.sh,v 1.11 2019/07/19 03:45:44 djm Exp $
 #      Placed in the Public Domain.
 
 tid="scp"
@@ -25,6 +25,7 @@ export SCP # used in scp-ssh-wrapper.scp
 scpclean() {
        rm -rf ${COPY} ${COPY2} ${DIR} ${DIR2}
        mkdir ${DIR} ${DIR2}
+       chmod 755 ${DIR} ${DIR2}
 }
 
 verbose "$tid: simple copy local file to local file"
@@ -101,7 +102,7 @@ if [ ! -z "$SUDO" ]; then
        $SUDO rm ${DIR2}/copy
 fi
 
-for i in 0 1 2 3 4; do
+for i in 0 1 2 3 4 5 6 7; do
        verbose "$tid: disallow bad server #$i"
        SCPTESTMODE=badserver_$i
        export DIR SCPTESTMODE
@@ -113,6 +114,15 @@ for i in 0 1 2 3 4; do
        scpclean
        $SCP -r $scpopts somehost:${DATA} ${DIR2} >/dev/null 2>/dev/null
        [ -d ${DIR}/dotpathdir ] && fail "allows dir creation outside of subdir"
+
+       scpclean
+       $SCP -pr $scpopts somehost:${DATA} ${DIR2} >/dev/null 2>/dev/null
+       [ ! -w ${DIR2} ] && fail "allows target root attribute change"
+
+       scpclean
+       $SCP $scpopts somehost:${DATA} ${DIR2} >/dev/null 2>/dev/null
+       [ -e ${DIR2}/extrafile ] && fail "allows unauth object creation"
+       rm -f ${DIR2}/extrafile
 done
 
 verbose "$tid: detect non-directory target"