mirror of https://github.com/wolfSSL/wolfssh.git
commit
35b8a50709
|
@ -926,6 +926,29 @@ static int SFTP_SetAttributes(WOLFSSH* ssh, byte* buf, word32 bufSz,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static INLINE int SFTP_GetSz(byte* buf, word32* sz,
|
||||||
|
word32 lowerBound, word32 upperBound)
|
||||||
|
{
|
||||||
|
int ret = WS_SUCCESS;
|
||||||
|
|
||||||
|
if (buf == NULL || sz == NULL) {
|
||||||
|
ret = WS_BAD_ARGUMENT;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ret == WS_SUCCESS) {
|
||||||
|
word32 val;
|
||||||
|
|
||||||
|
ato32(buf, &val);
|
||||||
|
if (val < lowerBound || val > upperBound)
|
||||||
|
ret = WS_BUFFER_E;
|
||||||
|
else
|
||||||
|
*sz = val;
|
||||||
|
}
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
#ifndef NO_WOLFSSH_SERVER
|
#ifndef NO_WOLFSSH_SERVER
|
||||||
|
|
||||||
static int SFTP_GetAttributes(void* fs, const char* fileName,
|
static int SFTP_GetAttributes(void* fs, const char* fileName,
|
||||||
|
@ -948,8 +971,8 @@ static int SFTP_ServerRecvInit(WOLFSSH* ssh) {
|
||||||
return len;
|
return len;
|
||||||
}
|
}
|
||||||
|
|
||||||
ato32(buf, &sz);
|
if (SFTP_GetSz(buf, &sz,
|
||||||
if (sz < MSG_ID_SZ + UINT32_SZ) {
|
MSG_ID_SZ + UINT32_SZ, WOLFSSH_MAX_SFTP_RECV) != WS_SUCCESS) {
|
||||||
wolfSSH_SFTP_ClearState(ssh, STATE_ID_ALL);
|
wolfSSH_SFTP_ClearState(ssh, STATE_ID_ALL);
|
||||||
return WS_BUFFER_E;
|
return WS_BUFFER_E;
|
||||||
}
|
}
|
||||||
|
@ -4679,8 +4702,9 @@ static int SFTP_ClientRecvInit(WOLFSSH* ssh) {
|
||||||
return len;
|
return len;
|
||||||
}
|
}
|
||||||
|
|
||||||
ato32(buf, &sz);
|
if (SFTP_GetSz(buf, &sz,
|
||||||
if (sz < MSG_ID_SZ + UINT32_SZ) {
|
MSG_ID_SZ + UINT32_SZ,
|
||||||
|
WOLFSSH_MAX_SFTP_RECV) != WS_SUCCESS) {
|
||||||
return WS_BUFFER_E;
|
return WS_BUFFER_E;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -152,6 +152,9 @@ struct WS_SFTPNAME {
|
||||||
#ifndef WOLFSSH_MAX_SFTP_RW
|
#ifndef WOLFSSH_MAX_SFTP_RW
|
||||||
#define WOLFSSH_MAX_SFTP_RW 1024
|
#define WOLFSSH_MAX_SFTP_RW 1024
|
||||||
#endif
|
#endif
|
||||||
|
#ifndef WOLFSSH_MAX_SFTP_RECV
|
||||||
|
#define WOLFSSH_MAX_SFTP_RECV 32768
|
||||||
|
#endif
|
||||||
|
|
||||||
/* functions for establishing a connection */
|
/* functions for establishing a connection */
|
||||||
WOLFSSH_API int wolfSSH_SFTP_accept(WOLFSSH* ssh);
|
WOLFSSH_API int wolfSSH_SFTP_accept(WOLFSSH* ssh);
|
||||||
|
|
Loading…
Reference in New Issue