bridge: mcast: Fix MLD2 Report IPv6 payload length check
Commite57f61858b
("net: bridge: mcast: fix stale nsrcs pointer in igmp3/mld2 report handling") introduced a bug in the IPv6 header payload length check which would potentially lead to rejecting a valid MLD2 Report: The check needs to take into account the 2 bytes for the "Number of Sources" field in the "Multicast Address Record" before reading it. And not the size of a pointer to this field. Fixes:e57f61858b
("net: bridge: mcast: fix stale nsrcs pointer in igmp3/mld2 report handling") Acked-by: Nikolay Aleksandrov <nikolay@cumulusnetworks.com> Signed-off-by: Linus Lüssing <linus.luessing@c0d3.blue> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
394de110a7
commit
5fc6266af7
@ -1007,7 +1007,7 @@ static int br_ip6_multicast_mld2_report(struct net_bridge *br,
|
|||||||
nsrcs_offset = len + offsetof(struct mld2_grec, grec_nsrcs);
|
nsrcs_offset = len + offsetof(struct mld2_grec, grec_nsrcs);
|
||||||
|
|
||||||
if (skb_transport_offset(skb) + ipv6_transport_len(skb) <
|
if (skb_transport_offset(skb) + ipv6_transport_len(skb) <
|
||||||
nsrcs_offset + sizeof(_nsrcs))
|
nsrcs_offset + sizeof(__nsrcs))
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
_nsrcs = skb_header_pointer(skb, nsrcs_offset,
|
_nsrcs = skb_header_pointer(skb, nsrcs_offset,
|
||||||
|
Loading…
Reference in New Issue
Block a user