@@ -677,6 +677,9 @@ int EmbedReceiveFrom(WOLFSSL *ssl, char *buf, int sz, void *ctx)
677677 WOLFSSL_ENTER ("EmbedReceiveFrom" );
678678 (void )ret ; /* possibly unused */
679679
680+ if (sz < 0 )
681+ return WOLFSSL_CBIO_ERR_GENERAL ;
682+
680683 XMEMSET (& lclPeer , 0 , sizeof (lclPeer ));
681684
682685#ifdef WOLFSSL_RW_THREADED
@@ -920,6 +923,9 @@ int EmbedSendTo(WOLFSSL* ssl, char *buf, int sz, void *ctx)
920923
921924 WOLFSSL_ENTER ("EmbedSendTo" );
922925
926+ if (sz < 0 )
927+ return WOLFSSL_CBIO_ERR_GENERAL ;
928+
923929 if (!isDGramSock (sd )) {
924930 /* Probably a TCP socket. peer and peerSz MUST be NULL and 0 */
925931 }
@@ -966,6 +972,9 @@ int EmbedReceiveFromMcast(WOLFSSL *ssl, char *buf, int sz, void *ctx)
966972
967973 WOLFSSL_ENTER ("EmbedReceiveFromMcast" );
968974
975+ if (sz < 0 )
976+ return WOLFSSL_CBIO_ERR_GENERAL ;
977+
969978 recvd = (int )DTLS_RECVFROM_FUNCTION (sd , buf , (size_t )sz , ssl -> rflags , NULL , NULL );
970979
971980 recvd = TranslateIoReturnCode (recvd , sd , SOCKET_RECEIVING );
@@ -996,6 +1005,9 @@ int EmbedGenerateCookie(WOLFSSL* ssl, byte *buf, int sz, void *ctx)
9961005
9971006 (void )ctx ;
9981007
1008+ if (sz < 0 )
1009+ return BAD_FUNC_ARG ;
1010+
9991011 XMEMSET (& peer , 0 , sizeof (peer ));
10001012 if (getpeername (sd , (SOCKADDR * )& peer , & peerSz ) != 0 ) {
10011013 WOLFSSL_MSG ("getpeername failed in EmbedGenerateCookie" );
@@ -1224,6 +1236,9 @@ int wolfIO_Recv(SOCKET_T sd, char *buf, int sz, int rdFlags)
12241236{
12251237 int recvd ;
12261238
1239+ if (sz < 0 )
1240+ return WOLFSSL_CBIO_ERR_GENERAL ;
1241+
12271242 recvd = (int )RECV_FUNCTION (sd , buf , (size_t )sz , rdFlags );
12281243 recvd = TranslateIoReturnCode (recvd , sd , SOCKET_RECEIVING );
12291244
@@ -1234,6 +1249,9 @@ int wolfIO_Send(SOCKET_T sd, char *buf, int sz, int wrFlags)
12341249{
12351250 int sent ;
12361251
1252+ if (sz < 0 )
1253+ return WOLFSSL_CBIO_ERR_GENERAL ;
1254+
12371255 sent = (int )SEND_FUNCTION (sd , buf , (size_t )sz , wrFlags );
12381256 sent = TranslateIoReturnCode (sent , sd , SOCKET_SENDING );
12391257
@@ -1247,6 +1265,9 @@ int wolfIO_RecvFrom(SOCKET_T sd, WOLFSSL_BIO_ADDR *addr, char *buf, int sz, int
12471265 int recvd ;
12481266 socklen_t addr_len = (socklen_t )sizeof (* addr );
12491267
1268+ if (sz < 0 )
1269+ return WOLFSSL_CBIO_ERR_GENERAL ;
1270+
12501271 recvd = (int )DTLS_RECVFROM_FUNCTION (sd , buf , (size_t )sz , rdFlags ,
12511272 addr ? & addr -> sa : NULL ,
12521273 addr ? & addr_len : 0 );
@@ -1260,6 +1281,9 @@ int wolfIO_SendTo(SOCKET_T sd, WOLFSSL_BIO_ADDR *addr, char *buf, int sz, int wr
12601281 int sent ;
12611282 socklen_t addr_len = addr ? wolfSSL_BIO_ADDR_size (addr ) : 0 ;
12621283
1284+ if (sz < 0 )
1285+ return WOLFSSL_CBIO_ERR_GENERAL ;
1286+
12631287 sent = (int )DTLS_SENDTO_FUNCTION (sd , buf , (size_t )sz , wrFlags ,
12641288 addr ? & addr -> sa : NULL ,
12651289 addr_len );
0 commit comments