diff options
-rw-r--r-- | src/lib/protocols/dns.c | 4 | ||||
-rw-r--r-- | src/lib/protocols/irc.c | 1 |
2 files changed, 4 insertions, 1 deletions
diff --git a/src/lib/protocols/dns.c b/src/lib/protocols/dns.c index 7051b2227..3fbb39915 100644 --- a/src/lib/protocols/dns.c +++ b/src/lib/protocols/dns.c @@ -47,7 +47,9 @@ static u_int16_t get16(int *i, const u_int8_t *payload) { /* *********************************************** */ static u_int getNameLength(u_int i, const u_int8_t *payload, u_int payloadLen) { - if(payload[i] == 0x00) + if(i >= payloadLen) + return(0); + else if(payload[i] == 0x00) return(1); else if(payload[i] == 0xC0) return(2); diff --git a/src/lib/protocols/irc.c b/src/lib/protocols/irc.c index ec22ee38b..5ae0e34f7 100644 --- a/src/lib/protocols/irc.c +++ b/src/lib/protocols/irc.c @@ -492,6 +492,7 @@ void ndpi_search_irc_tcp(struct ndpi_detection_module_struct *ndpi_struct, struc ndpi_parse_packet_line_info(ndpi_struct, flow); } else { flow->l4.tcp.irc_3a_counter++; + packet->parsed_lines = 0; } for (i = 0; i < packet->parsed_lines; i++) { if (packet->line[i].ptr[0] == ':') { |