More sniffer length checks
This commit is contained in:
@@ -2121,6 +2121,11 @@ static int CheckIp6Hdr(Ip6Hdr* iphdr, IpInfo* info, int length, char* error)
|
|||||||
int version = IP_V(iphdr);
|
int version = IP_V(iphdr);
|
||||||
int exthdrsz = IP6_HDR_SZ;
|
int exthdrsz = IP6_HDR_SZ;
|
||||||
|
|
||||||
|
if (length < IP6_HDR_SZ) {
|
||||||
|
SetError(BAD_IPVER_STR, error, NULL, 0);
|
||||||
|
return WOLFSSL_FATAL_ERROR;
|
||||||
|
}
|
||||||
|
|
||||||
TraceIP6(iphdr);
|
TraceIP6(iphdr);
|
||||||
Trace(IP_CHECK_STR);
|
Trace(IP_CHECK_STR);
|
||||||
|
|
||||||
@@ -2175,6 +2180,11 @@ static int CheckIpHdr(IpHdr* iphdr, IpInfo* info, int length, char* error,
|
|||||||
if (version == IPV6)
|
if (version == IPV6)
|
||||||
return CheckIp6Hdr((Ip6Hdr*)iphdr, info, length, error);
|
return CheckIp6Hdr((Ip6Hdr*)iphdr, info, length, error);
|
||||||
|
|
||||||
|
if (length < IP_HDR_SZ) {
|
||||||
|
SetError(PACKET_HDR_SHORT_STR, error, NULL, 0);
|
||||||
|
return WOLFSSL_FATAL_ERROR;
|
||||||
|
}
|
||||||
|
|
||||||
if (trace) {
|
if (trace) {
|
||||||
TraceIP(iphdr);
|
TraceIP(iphdr);
|
||||||
Trace(IP_CHECK_STR);
|
Trace(IP_CHECK_STR);
|
||||||
@@ -5026,6 +5036,10 @@ static const byte* DecryptMessage(WOLFSSL* ssl, const byte* input, word32 sz,
|
|||||||
|
|
||||||
#ifdef WOLFSSL_TLS13
|
#ifdef WOLFSSL_TLS13
|
||||||
if (IsAtLeastTLSv1_3(ssl->version)) {
|
if (IsAtLeastTLSv1_3(ssl->version)) {
|
||||||
|
if (sz < ssl->specs.aead_mac_size) {
|
||||||
|
*error = BUFFER_ERROR;
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
ret = DecryptTls13(ssl, output, input, sz, (byte*)rh, RECORD_HEADER_SZ);
|
ret = DecryptTls13(ssl, output, input, sz, (byte*)rh, RECORD_HEADER_SZ);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -5404,6 +5418,12 @@ static int CheckHeaders(IpInfo* ipInfo, TcpInfo* tcpInfo, const byte* packet,
|
|||||||
/* trim VLAN header and try again */
|
/* trim VLAN header and try again */
|
||||||
packet += 8;
|
packet += 8;
|
||||||
length -= 8;
|
length -= 8;
|
||||||
|
if (length < IP_HDR_SZ) {
|
||||||
|
SetError(PACKET_HDR_SHORT_STR, error, NULL, 0);
|
||||||
|
return WOLFSSL_FATAL_ERROR;
|
||||||
|
}
|
||||||
|
iphdr = (IpHdr*)packet;
|
||||||
|
version = IP_V(iphdr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user