@@ -2146,8 +2146,13 @@ static int CheckIp6Hdr(Ip6Hdr* iphdr, IpInfo* info, int length, char* error)
21462146 exthdrsz += hdrsz ;
21472147 exthdr = (Ip6ExtHdr * )((byte * )exthdr + hdrsz );
21482148 }
2149- while (exthdr -> next_header != TCP_PROTOCOL &&
2149+ while (exthdrsz < length &&
2150+ exthdr -> next_header != TCP_PROTOCOL &&
21502151 exthdr -> next_header != NO_NEXT_HEADER );
2152+ if (exthdrsz >= length ) {
2153+ SetError (PACKET_HDR_SHORT_STR , error , NULL , 0 );
2154+ return WOLFSSL_FATAL_ERROR ;
2155+ }
21512156 }
21522157
21532158#ifndef WOLFSSL_SNIFFER_WATCH
@@ -4571,6 +4576,10 @@ static int DoHandShake(const byte* input, int* sslBytes,
45714576
45724577#ifdef HAVE_MAX_FRAGMENT
45734578 if (session -> tlsFragBuf ) {
4579+ if (session -> tlsFragOffset + rhSize > session -> tlsFragSize ) {
4580+ SetError (HANDSHAKE_INPUT_STR , error , session , FATAL_ERROR_STATE );
4581+ return WOLFSSL_FATAL_ERROR ;
4582+ }
45744583 XMEMCPY (session -> tlsFragBuf + session -> tlsFragOffset , input , rhSize );
45754584 session -> tlsFragOffset += rhSize ;
45764585 * sslBytes -= rhSize ;
@@ -4625,6 +4634,10 @@ static int DoHandShake(const byte* input, int* sslBytes,
46254634 * sslBytes += HANDSHAKE_HEADER_SZ ;
46264635 }
46274636
4637+ if (session -> tlsFragOffset + rhSize > session -> tlsFragSize ) {
4638+ SetError (HANDSHAKE_INPUT_STR , error , session , FATAL_ERROR_STATE );
4639+ return WOLFSSL_FATAL_ERROR ;
4640+ }
46284641 XMEMCPY (session -> tlsFragBuf + session -> tlsFragOffset , input , rhSize );
46294642 session -> tlsFragOffset += rhSize ;
46304643 * sslBytes -= rhSize ;
@@ -5622,7 +5635,7 @@ static int AddToReassembly(byte from, word32 seq, const byte* sslFrame,
56225635 if (end >= curr -> begin )
56235636 end = curr -> begin - 1 ;
56245637
5625- if (MaxRecoveryMemory - 1 &&
5638+ if (MaxRecoveryMemory != -1 &&
56265639 (int )(* reassemblyMemory + sslBytes ) > MaxRecoveryMemory ) {
56275640 SetError (REASSEMBLY_MAX_STR , error , session , FATAL_ERROR_STATE );
56285641 return WOLFSSL_FATAL_ERROR ;
0 commit comments