From ada7d32c50d8930f1a1a0707cb55b2053e348373 Mon Sep 17 00:00:00 2001 From: Ivan Nardi <12729895+IvanNardi@users.noreply.github.com> Date: Thu, 10 Feb 2022 11:46:32 +0100 Subject: HSRP: fix dissection over IPv6 (#1443) Handle all message types. --- src/lib/protocols/hsrp.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) (limited to 'src/lib') diff --git a/src/lib/protocols/hsrp.c b/src/lib/protocols/hsrp.c index 6852c0da4..a34205f99 100644 --- a/src/lib/protocols/hsrp.c +++ b/src/lib/protocols/hsrp.c @@ -42,9 +42,7 @@ void ndpi_search_hsrp(struct ndpi_detection_module_struct *ndpi_struct, port_to_match = htons(HSRP_PORT_V6); if((packet->udp->source == port_to_match) && (packet->udp->dest == port_to_match) - && (packet->payload_packet_len >= 42) - && (packet->payload[2] == 0x02) /* Version 2 */ - && (packet->payload[5] == 0x06) /* IPv6 */ + && (packet->payload[0] <= 0x04) /* Message type */ && (ntohl(packet->iphv6->ip6_dst.u6_addr.u6_addr32[0]) == 0xFF020000) && (ntohl(packet->iphv6->ip6_dst.u6_addr.u6_addr32[1]) == 0x00000000) && (ntohl(packet->iphv6->ip6_dst.u6_addr.u6_addr32[2]) == 0x00000000) -- cgit v1.2.3