@@ -3595,7 +3595,7 @@ int wolfSSH_SFTP_RecvWrite(WOLFSSH* ssh, int reqId, byte* data, word32 maxSz)
35953595
35963596 /* get file handle */
35973597 ato32 (data + idx , & sz ); idx += UINT32_SZ ;
3598- if (sz + idx > maxSz || sz > WOLFSSH_MAX_HANDLE ) {
3598+ if (sz + idx > maxSz || sz > WOLFSSH_MAX_HANDLE || sz != sizeof ( WFD ) ) {
35993599 WLOG (WS_LOG_SFTP , "Error with file handle size" );
36003600 res = err ;
36013601 type = WOLFSSH_FTP_FAILURE ;
@@ -3685,7 +3685,7 @@ int wolfSSH_SFTP_RecvWrite(WOLFSSH* ssh, int reqId, byte* data, word32 maxSz)
36853685 /* get file handle */
36863686 ato32 (data + idx , & sz );
36873687 idx += UINT32_SZ ;
3688- if (sz + idx > maxSz || sz > WOLFSSH_MAX_HANDLE ) {
3688+ if (sz + idx > maxSz || sz > WOLFSSH_MAX_HANDLE || sz != sizeof ( HANDLE ) ) {
36893689 WLOG (WS_LOG_SFTP , "Error with file handle size" );
36903690 res = err ;
36913691 type = WOLFSSH_FTP_FAILURE ;
@@ -3780,7 +3780,7 @@ int wolfSSH_SFTP_RecvRead(WOLFSSH* ssh, int reqId, byte* data, word32 maxSz)
37803780
37813781 /* get file handle */
37823782 ato32 (data + idx , & sz ); idx += UINT32_SZ ;
3783- if (sz + idx > maxSz || sz > WOLFSSH_MAX_HANDLE ) {
3783+ if (sz + idx > maxSz || sz > WOLFSSH_MAX_HANDLE || sz != sizeof ( WFD ) ) {
37843784 return WS_BUFFER_E ;
37853785 }
37863786 WMEMSET ((byte * )& fd , 0 , sizeof (WFD ));
@@ -3880,7 +3880,7 @@ int wolfSSH_SFTP_RecvRead(WOLFSSH* ssh, int reqId, byte* data, word32 maxSz)
38803880
38813881 /* get file handle */
38823882 ato32 (data + idx , & sz ); idx += UINT32_SZ ;
3883- if (sz > maxSz - idx || sz > WOLFSSH_MAX_HANDLE ) {
3883+ if (sz > maxSz - idx || sz > WOLFSSH_MAX_HANDLE || sz != sizeof ( HANDLE ) ) {
38843884 return WS_BUFFER_E ;
38853885 }
38863886 WMEMSET ((byte * )& fd , 0 , sizeof (HANDLE ));
@@ -5630,7 +5630,7 @@ int wolfSSH_SFTP_RecvFSetSTAT(WOLFSSH* ssh, int reqId, byte* data, word32 maxSz)
56305630
56315631 /* get file handle */
56325632 ato32 (data + idx , & sz ); idx += UINT32_SZ ;
5633- if (sz + idx > maxSz || sz > WOLFSSH_MAX_HANDLE ) {
5633+ if (sz + idx > maxSz || sz > WOLFSSH_MAX_HANDLE || sz != sizeof ( WFD ) ) {
56345634 return WS_BUFFER_E ;
56355635 }
56365636 WMEMSET ((byte * )& fd , 0 , sizeof (WFD ));
0 commit comments