Commit 73372783 authored by Ibe Van de Veire's avatar Ibe Van de Veire Committed by Henrik Brix Andersen
Browse files

net: ip: igmp: Fix wrong header length

The header length of the net ip packet was calculated using only the
net_pkt_ip_hdr_len function. The correct header length should be
calculated by adding net_pkt_ip_hdr_len and net_pkt_ipv4_opts_len. This
resulted in an incorrect IGMP version type in case of IGMPv2 message
(when IGMPv3 was enabled). The IGMP message was not parsed correctly and
therefore dropped.

Signed-off-by: default avatarIbe Van de Veire <ibe.vandeveire@basalte.be>
(cherry picked from commit f852c123)
parent 6937dabf
Loading
Loading
Loading
Loading
+2 −1
Changes for subsys/net/ip/igmp.c: 2 added lines, 1 removed line.
Original line number Diff line number Diff line
@@ -425,7 +425,8 @@ enum net_verdict net_ipv4_igmp_input(struct net_pkt *pkt, struct net_ipv4_hdr *i
	struct net_ipv4_igmp_v2_query *igmpv2_hdr;
	enum igmp_version version;
	int ret;
	int igmp_buf_len = pkt->buffer->len - net_pkt_ip_hdr_len(pkt);
	int igmp_buf_len =
		pkt->buffer->len - (net_pkt_ip_hdr_len(pkt) + net_pkt_ipv4_opts_len(pkt));

	/* Detect IGMP type (RFC 3376 ch 7.1) */
	if (igmp_buf_len == 8) {