diff options
Diffstat (limited to 'crypto/openssh/regress/sftp-resume.sh')
-rw-r--r-- | crypto/openssh/regress/sftp-resume.sh | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/crypto/openssh/regress/sftp-resume.sh b/crypto/openssh/regress/sftp-resume.sh new file mode 100644 index 000000000000..f4fe8f9281dc --- /dev/null +++ b/crypto/openssh/regress/sftp-resume.sh @@ -0,0 +1,43 @@ +# $OpenBSD: sftp-resume.sh,v 1.2 2025/03/11 09:06:50 dtucker Exp $ +# Placed in the Public Domain. + +tid="sftp resume" + +CLIENT_LOG=${OBJ}/sftp.log + +# We test up to 1MB, ensure source data is large enough. +increase_datafile_size 1200 + +for cmd in put get; do + verbose "$tid: ${cmd}" + for size in 0 1 1k 1m size-1 same; do + trace "$tid: test ${cmd} ${size}" + rm -rf ${COPY}.1 ${COPY}.2 + cp ${DATA} ${COPY}.1 + + # Set up requested source and destination file sizes. + case "${size}" in + 0) touch ${COPY}.2 + ;; + size-1) dd if=${DATA} of=${COPY}.1 bs=1024 count=1 >/dev/null 2>&1 + dd if=${DATA} of=${COPY}.2 bs=1023 count=1 >/dev/null 2>&1 + ;; + same) cp ${DATA} ${COPY}.2 + ;; + 1m) dd if=${COPY}.1 of=${COPY}.2 bs=1k count=1k >/dev/null 2<&1 + ;; + *) dd if=${COPY}.1 of=${COPY}.2 bs=${size} count=1 >/dev/null 2>&1 + ;; + esac + + # Perform copy and check. + echo "${cmd} -a ${COPY}.1 ${COPY}.2" | \ + ${SFTP} -D ${SFTPSERVER} -vvv >${CLIENT_LOG} 2>&1 \ + || fail "${cmd} failed" + cmp ${COPY}.1 ${COPY}.2 || fail "corrupted copy after ${cmd} ${size}" + grep "reordered" ${CLIENT_LOG} >/dev/null && \ + fail "server reordered requests ${cmd} ${size}" + done +done + +rm -rf ${COPY}.1 ${COPY}.2 |