Merge pull request #657 from JacobBarthelmeh/sftp_large

Fix for large file transfers on client side with SFTP
pull/658/head
John Safranek 2024-02-15 17:39:56 -08:00 committed by GitHub
commit 4193671164
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 45 additions and 2 deletions

View File

@ -22,7 +22,7 @@ jobs:
- name: autogen
run: ./autogen.sh
- name: configure
run: ./configure --enable-all CPPFLAGS=-DWOLFSSH_NO_FPKI
run: ./configure --enable-all CPPFLAGS="-DWOLFSSH_NO_FPKI -DWOLFSSH_NO_SFTP_TIMEOUT -DWOLFSSH_MAX_SFTP_RW=4000000"
- name: make
run: make
- name: make check

View File

@ -59,6 +59,7 @@ run_test() {
run_test "sshd_exec_test.sh"
run_test "sshd_term_size_test.sh"
run_test "sshd_large_sftp_test.sh"
#Github actions needs resolved for these test cases
#run_test "error_return.sh"

View File

@ -0,0 +1,40 @@
#!/bin/sh
# sshd local test
PWD=`pwd`
cd ../../..
TEST_SFTP_CLIENT="./examples/sftpclient/wolfsftp"
USER=`whoami`
PRIVATE_KEY="./keys/hansel-key-ecc.der"
PUBLIC_KEY="./keys/hansel-key-ecc.pub"
if [ -z "$1" ] || [ -z "$2" ]; then
echo "expecting host and port as arguments"
echo "./sshd_exec_test.sh 127.0.0.1 22222"
exit 1
fi
# create a large file with random data (larger than word32 max value)
head -c 4400000010 < /dev/random > large-random.txt
set -e
echo "$TEST_SFTP_CLIENT -u $USER -i $PRIVATE_KEY -j $PUBLIC_KEY -g -l large-random.txt -r `pwd`/large-random-2.txt -h \"$1\" -p \"$2\""
$TEST_SFTP_CLIENT -u $USER -i $PRIVATE_KEY -j $PUBLIC_KEY -g -l large-random.txt -r `pwd`/large-random-2.txt -h "$1" -p "$2"
cmp large-random.txt large-random-2.txt
RESULT=$?
if [ "$RESULT" != "0" ]; then
echo "files did not match when compared"
exit 1
fi
rm -f large-random.txt
rm -f large-random-2.txt
set +e
cd $PWD
exit 0

View File

@ -14379,7 +14379,9 @@ void AddAssign64(word32* addend1, word32 addend2)
{
if (addend1[0] > (WOLFSSL_MAX_32BIT - addend2)) {
addend1[1]++;
addend1[0] = addend2 - (WOLFSSL_MAX_32BIT- addend1[0]);
/* -1 to account for roll over digit */
addend1[0] = addend2 - (WOLFSSL_MAX_32BIT- addend1[0]) - 1;
}
else {
addend1[0] += addend2;