aboutsummaryrefslogtreecommitdiff
path: root/crypto/openssh/regress/sftp-resume.sh
diff options
context:
space:
mode:
Diffstat (limited to 'crypto/openssh/regress/sftp-resume.sh')
-rw-r--r--crypto/openssh/regress/sftp-resume.sh43
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