mirror of
https://github.com/torvalds/linux.git
synced 2026-05-31 02:24:24 +02:00
ipv4: icmp: do not process ICMP_EXT_ECHOREPLY for broadcast/multicast addresses
There is no point processing ICMP_EXT_ECHOREPLY for routes which would drop ICMP_ECHOREPLY (RFC 1122 3.2.2.6, 3.2.2.8) This seems an oversight of the initial implementation. Signed-off-by: Eric Dumazet <edumazet@google.com> Reviewed-by: David Ahern <dsahern@kernel.org> Link: https://patch.msgid.link/20250226183437.1457318-2-edumazet@google.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
8e7e3d97f9
commit
daeb6a8f3b
|
|
@ -1248,22 +1248,6 @@ int icmp_rcv(struct sk_buff *skb)
|
|||
goto reason_check;
|
||||
}
|
||||
|
||||
if (icmph->type == ICMP_EXT_ECHOREPLY) {
|
||||
reason = ping_rcv(skb);
|
||||
goto reason_check;
|
||||
}
|
||||
|
||||
/*
|
||||
* 18 is the highest 'known' ICMP type. Anything else is a mystery
|
||||
*
|
||||
* RFC 1122: 3.2.2 Unknown ICMP messages types MUST be silently
|
||||
* discarded.
|
||||
*/
|
||||
if (icmph->type > NR_ICMP_TYPES) {
|
||||
reason = SKB_DROP_REASON_UNHANDLED_PROTO;
|
||||
goto error;
|
||||
}
|
||||
|
||||
/*
|
||||
* Parse the ICMP message
|
||||
*/
|
||||
|
|
@ -1290,6 +1274,22 @@ int icmp_rcv(struct sk_buff *skb)
|
|||
}
|
||||
}
|
||||
|
||||
if (icmph->type == ICMP_EXT_ECHOREPLY) {
|
||||
reason = ping_rcv(skb);
|
||||
goto reason_check;
|
||||
}
|
||||
|
||||
/*
|
||||
* 18 is the highest 'known' ICMP type. Anything else is a mystery
|
||||
*
|
||||
* RFC 1122: 3.2.2 Unknown ICMP messages types MUST be silently
|
||||
* discarded.
|
||||
*/
|
||||
if (icmph->type > NR_ICMP_TYPES) {
|
||||
reason = SKB_DROP_REASON_UNHANDLED_PROTO;
|
||||
goto error;
|
||||
}
|
||||
|
||||
reason = icmp_pointers[icmph->type].handler(skb);
|
||||
reason_check:
|
||||
if (!reason) {
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user