From: dtucker@openbsd.org Date: Tue, 11 Mar 2025 07:50:20 +0000 (+0000) Subject: upstream: Add regress test for sftp resume. X-Git-Tag: V_10_0_P1~43 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4bcbac742968f5086cfd4c570a51de25ef77931f;p=thirdparty%2Fopenssh-portable.git upstream: Add regress test for sftp resume. OpenBSD-Regress-ID: 37f629b3014338fa23a85df1e1bb320ea12282e1 --- diff --git a/regress/Makefile b/regress/Makefile index 7f7349706..7e7f95b58 100644 --- a/regress/Makefile +++ b/regress/Makefile @@ -1,4 +1,4 @@ -# $OpenBSD: Makefile,v 1.135 2024/06/14 04:43:11 djm Exp $ +# $OpenBSD: Makefile,v 1.136 2025/03/11 07:50:20 dtucker Exp $ tests: prep file-tests t-exec unit @@ -65,6 +65,7 @@ LTESTS= connect \ sftp-batch \ sftp-glob \ sftp-perm \ + sftp-resume \ sftp-uri \ reconfigure \ dynamic-forward \ diff --git a/regress/sftp-resume.sh b/regress/sftp-resume.sh new file mode 100644 index 000000000..4c2f6f118 --- /dev/null +++ b/regress/sftp-resume.sh @@ -0,0 +1,41 @@ +# $OpenBSD: sftp-resume.sh,v 1.1 2025/03/11 07:50:20 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 + ;; + *) 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