Page MenuHomeFreeBSD

D36728.diff
No OneTemporary

D36728.diff

diff --git a/sys/netinet/ip_icmp.c b/sys/netinet/ip_icmp.c
--- a/sys/netinet/ip_icmp.c
+++ b/sys/netinet/ip_icmp.c
@@ -546,6 +546,9 @@
/* Discard ICMP's in response to multicast packets */
if (IN_MULTICAST(ntohl(icp->icmp_ip.ip_dst.s_addr)))
goto badcode;
+ /* Filter out responses to INADDR_ANY, protocols ignore it. */
+ if (icp->icmp_ip.ip_dst.s_addr == INADDR_ANY)
+ goto freeit;
#ifdef ICMPPRINTFS
if (icmpprintfs)
printf("deliver to protocol %d\n", icp->icmp_ip.ip_p);
diff --git a/sys/netinet/sctp_usrreq.c b/sys/netinet/sctp_usrreq.c
--- a/sys/netinet/sctp_usrreq.c
+++ b/sys/netinet/sctp_usrreq.c
@@ -272,9 +272,6 @@
struct sctp_init_chunk *ch;
struct sockaddr_in src, dst;
- if (sin->sin_addr.s_addr == INADDR_ANY) {
- return;
- }
if (PRC_IS_REDIRECT(cmd)) {
ip = NULL;
} else if ((unsigned)cmd >= PRC_NCMDS || inetctlerrmap[cmd] == 0) {
diff --git a/sys/netinet/tcp_subr.c b/sys/netinet/tcp_subr.c
--- a/sys/netinet/tcp_subr.c
+++ b/sys/netinet/tcp_subr.c
@@ -2866,9 +2866,6 @@
tcp_seq icmp_tcp_seq;
int mtu;
- if (sin->sin_addr.s_addr == INADDR_ANY)
- return;
-
if (cmd == PRC_MSGSIZE)
notify = tcp_mtudisc_notify;
else if (V_icmp_may_rst && (cmd == PRC_UNREACH_ADMIN_PROHIB ||
diff --git a/sys/netinet/udp_usrreq.c b/sys/netinet/udp_usrreq.c
--- a/sys/netinet/udp_usrreq.c
+++ b/sys/netinet/udp_usrreq.c
@@ -746,9 +746,6 @@
struct udphdr *uh;
struct inpcb *inp;
- if (sin->sin_addr.s_addr == INADDR_ANY)
- return;
-
if (PRC_IS_REDIRECT(cmd)) {
/* signal EHOSTDOWN, as it flushes the cached route */
in_pcbnotifyall(pcbinfo, sin->sin_addr, EHOSTDOWN, udp_notify);

File Metadata

Mime Type
text/plain
Expires
Thu, Feb 6, 9:42 AM (21 h, 42 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
16491367
Default Alt Text
D36728.diff (1 KB)

Event Timeline