1 # $OpenBSD: sftp-badcmds.sh,v 1.4 2009/08/13 01:11:55 djm Exp $ 2 # Placed in the Public Domain. 3 4 tid="sftp invalid commands" 5 6 DATA=/bin/ls${EXEEXT} 7 DATA2=/bin/sh${EXEEXT} 8 NONEXIST=/NONEXIST.$$ 9 COPY=${OBJ}/copy 10 GLOBFILES=`(cd /bin;echo l*)` 11 12 rm -rf ${COPY} ${COPY}.1 ${COPY}.2 ${COPY}.dd 13 14 rm -f ${COPY} 15 verbose "$tid: get nonexistent" 16 echo "get $NONEXIST $COPY" | ${SFTP} -D ${SFTPSERVER} >/dev/null 2>&1 \ 17 || fail "get nonexistent failed" 18 test -f ${COPY} && fail "existing copy after get nonexistent" 19 20 rm -f ${COPY}.dd/* 21 verbose "$tid: glob get to nonexistent directory" 22 echo "get /bin/l* $NONEXIST" | ${SFTP} -D ${SFTPSERVER} >/dev/null 2>&1 \ 23 || fail "get nonexistent failed" 24 for x in $GLOBFILES; do 25 test -f ${COPY}.dd/$x && fail "existing copy after get nonexistent" 26 done 27 28 rm -f ${COPY} 29 verbose "$tid: put nonexistent" 30 echo "put $NONEXIST $COPY" | ${SFTP} -D ${SFTPSERVER} >/dev/null 2>&1 \ 31 || fail "put nonexistent failed" 32 test -f ${COPY} && fail "existing copy after put nonexistent" 33 34 rm -f ${COPY}.dd/* 35 verbose "$tid: glob put to nonexistent directory" 36 echo "put /bin/l* ${COPY}.dd" | ${SFTP} -D ${SFTPSERVER} >/dev/null 2>&1 \ 37 || fail "put nonexistent failed" 38 for x in $GLOBFILES; do 39 test -f ${COPY}.dd/$x && fail "existing copy after nonexistent" 40 done 41 42 rm -f ${COPY} 43 verbose "$tid: rename nonexistent" 44 echo "rename $NONEXIST ${COPY}.1" | ${SFTP} -D ${SFTPSERVER} >/dev/null 2>&1 \ 45 || fail "rename nonexist failed" 46 test -f ${COPY}.1 && fail "file exists after rename nonexistent" 47 48 rm -rf ${COPY} ${COPY}.dd 49 cp $DATA $COPY 50 mkdir ${COPY}.dd 51 verbose "$tid: rename target exists (directory)" 52 echo "rename $COPY ${COPY}.dd" | ${SFTP} -D ${SFTPSERVER} >/dev/null 2>&1 \ 53 || fail "rename target exists (directory) failed" 54 test -f ${COPY} || fail "oldname missing after rename target exists (directory)" 55 test -d ${COPY}.dd || fail "newname missing after rename target exists (directory)" 56 cmp $DATA ${COPY} >/dev/null 2>&1 || fail "corrupted oldname after rename target exists (directory)" 57 58 rm -f ${COPY}.dd/* 59 rm -rf ${COPY} 60 cp ${DATA2} ${COPY} 61 verbose "$tid: glob put files to local file" 62 echo "put /bin/l* $COPY" | ${SFTP} -D ${SFTPSERVER} >/dev/null 2>&1 63 cmp ${DATA2} ${COPY} || fail "put successed when it should have failed" 64 65 rm -rf ${COPY} ${COPY}.1 ${COPY}.2 ${COPY}.dd 66 67 68