Skip to content

Commit 6084397

Browse files
committed
sftp: reply to a bad RMDIR path before logging it
RecvRMDIR answers a path GetAndCleanPath cannot resolve with FAILURE straight away, as RecvMKDIR does, so the failure log never prints the unfilled dir buffer. - TestSftpFailedRequestsAnswered sends RMDIR an over-long path
1 parent 2b679e0 commit 6084397

2 files changed

Lines changed: 7 additions & 2 deletions

File tree

‎src/wolfsftp.c‎

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2229,6 +2229,11 @@ int wolfSSH_SFTP_RecvRMDIR(WOLFSSH* ssh, int reqId, byte* data, word32 maxSz)
22292229
}
22302230

22312231
ret = GetAndCleanPath(ssh, str, strSz, dir, sizeof(dir));
2232+
if (ret != WS_SUCCESS && ret != WS_PERMISSIONS) {
2233+
WLOG(WS_LOG_SFTP, "Unable to resolve directory path");
2234+
rc = SFTP_SendStatus(ssh, WOLFSSH_FTP_FAILURE, reqId, err);
2235+
return (rc == WS_SUCCESS) ? WS_BAD_FILE_E : rc;
2236+
}
22322237

22332238
if (ret == 0) {
22342239
#ifndef USE_WINDOWS_API

‎tests/regress.c‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18514,8 +18514,8 @@ static void TestSftpFailedRequestsAnswered(void)
1851418514
char badFile[64];
1851518515
char badDir[64];
1851618516
const byte pathTypes[] = {
18517-
WOLFSSH_FTP_OPEN, WOLFSSH_FTP_MKDIR, WOLFSSH_FTP_REMOVE,
18518-
WOLFSSH_FTP_REALPATH,
18517+
WOLFSSH_FTP_OPEN, WOLFSSH_FTP_MKDIR, WOLFSSH_FTP_RMDIR,
18518+
WOLFSSH_FTP_REMOVE, WOLFSSH_FTP_REALPATH,
1851918519
#ifndef NO_WOLFSSH_DIR
1852018520
WOLFSSH_FTP_OPENDIR,
1852118521
#endif

0 commit comments

Comments
 (0)