Merge pull request #490 from JacobBarthelmeh/sftp-path

handle full path used with SFTP Get-Put commands
pull/492/head
John Safranek 2023-01-24 15:46:36 -08:00 committed by GitHub
commit 7c92e34180
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 31 additions and 6 deletions

View File

@ -1523,17 +1523,24 @@ static int doAutopilot(int cmd, char* local, char* remote)
int err;
int ret = WS_SUCCESS;
char fullpath[128] = ".";
WS_SFTPNAME* name;
WS_SFTPNAME* name = NULL;
do {
name = wolfSSH_SFTP_RealPath(ssh, fullpath);
err = wolfSSH_get_error(ssh);
} while ((err == WS_WANT_READ || err == WS_WANT_WRITE) &&
if (remote != NULL && remote[0] == '/') {
/* use remote absolute path if provided */
WMEMSET(fullpath, 0, sizeof(fullpath));
WSTRNCPY(fullpath, remote, sizeof(fullpath) - 1);
}
else {
do {
name = wolfSSH_SFTP_RealPath(ssh, fullpath);
err = wolfSSH_get_error(ssh);
} while ((err == WS_WANT_READ || err == WS_WANT_WRITE) &&
ret != WS_SUCCESS);
snprintf(fullpath, sizeof(fullpath), "%s/%s",
snprintf(fullpath, sizeof(fullpath), "%s/%s",
name == NULL ? "." : name->fName,
remote);
}
do {
if (cmd == AUTOPILOT_PUT) {

View File

@ -119,4 +119,22 @@ then
exit 1
fi
# using full path test.
rm -rf sample2-copy.txt
PWD=`pwd`
if ! ./examples/sftpclient/wolfsftp -u jill -P upthehill -p "$PORT" \
-g -l sample2.txt -r $PWD/sample2-copy.txt
then
echo "Unable to put file using full path."
do_cleanup
exit 1
fi
if ! diff sample2.txt sample2-copy.txt >/dev/null
then
echo "Put test files do not match after using full path."
do_cleanup
exit 1
fi
do_cleanup