aboutsummaryrefslogtreecommitdiff
path: root/src/lib/protocols/quic.c
diff options
context:
space:
mode:
authortheirix <theirix@gmail.com>2016-08-07 22:36:36 +0300
committertheirix <theirix@gmail.com>2016-08-07 22:37:36 +0300
commit49810055721ee981527ac1b65e0e37dd32eade85 (patch)
tree281cb799bc6a6fbe24dcfa4afaada42b2a4087af /src/lib/protocols/quic.c
parent9e207f7f24fd693c8d5a095db43dd7077e9fc903 (diff)
Fixed QUIC crash
Diffstat (limited to 'src/lib/protocols/quic.c')
-rw-r--r--src/lib/protocols/quic.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/lib/protocols/quic.c b/src/lib/protocols/quic.c
index 6e1ad77cc..8050a9b61 100644
--- a/src/lib/protocols/quic.c
+++ b/src/lib/protocols/quic.c
@@ -82,7 +82,8 @@ void ndpi_search_quic(struct ndpi_detection_module_struct *ndpi_struct,
NDPI_LOG(NDPI_PROTOCOL_QUIC, ndpi_struct, NDPI_LOG_DEBUG, "found QUIC.\n");
ndpi_set_detected_protocol(ndpi_struct, flow, NDPI_PROTOCOL_QUIC, NDPI_PROTOCOL_UNKNOWN);
- if(!strncmp((char*)&packet->payload[quic_hlen+17], "CHLO" /* Client Hello */, 4)) {
+ if(udp_len > quic_hlen + 17 + 4 &&
+ !strncmp((char*)&packet->payload[quic_hlen+17], "CHLO" /* Client Hello */, 4)) {
/* Check if SNI (Server Name Identification) is present */
for(i=quic_hlen+12; i<udp_len-3; i++) {
if((packet->payload[i] == 'S')
@@ -94,7 +95,7 @@ void ndpi_search_quic(struct ndpi_detection_module_struct *ndpi_struct,
int len = offset-prev_offset;
int sni_offset = i+prev_offset+1;
- while((packet->payload[sni_offset] == '-') && (sni_offset < udp_len))
+ while((sni_offset < udp_len) && (packet->payload[sni_offset] == '-'))
sni_offset++;
if((sni_offset+len) < udp_len) {