diff options
author | ru <ru@FreeBSD.org> | 2002-01-11 12:13:57 +0000 |
---|---|---|
committer | ru <ru@FreeBSD.org> | 2002-01-11 12:13:57 +0000 |
commit | 6f5f8c6c2c7d212e50d18d9c52828732d8daca2f (patch) | |
tree | 3bf6f03f8edd4c408b5cf710727c78aae5f61d04 /sys/netinet/ip_icmp.c | |
parent | 23730131c8a3ec365e7633e7ec80fdfcf7494c29 (diff) | |
download | FreeBSD-src-6f5f8c6c2c7d212e50d18d9c52828732d8daca2f.zip FreeBSD-src-6f5f8c6c2c7d212e50d18d9c52828732d8daca2f.tar.gz |
Fix a panic condition in icmp_reflect() introduced in rev. 1.61.
(We should be able to handle locally originated IP packets, and
these do not have m_pkthdr.rcvif set.)
PR: kern/32806, kern/33766
Reviewed by: luigi
Fix tested by: Maxim Konovalov <maxim@macomnet.ru>,
Erwin Lansing <erwin@lansing.dk>
Diffstat (limited to 'sys/netinet/ip_icmp.c')
-rw-r--r-- | sys/netinet/ip_icmp.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/sys/netinet/ip_icmp.c b/sys/netinet/ip_icmp.c index a73a150..b1d37dc 100644 --- a/sys/netinet/ip_icmp.c +++ b/sys/netinet/ip_icmp.c @@ -609,8 +609,8 @@ icmp_reflect(m) LIST_FOREACH(ia, INADDR_HASH(t.s_addr), ia_hash) if (t.s_addr == IA_SIN(ia)->sin_addr.s_addr) goto match; - KASSERT(m->m_pkthdr.rcvif != NULL, ("icmp_reflect: NULL rcvif")); - if (m->m_pkthdr.rcvif->if_flags & IFF_BROADCAST) { + if (m->m_pkthdr.rcvif != NULL && + m->m_pkthdr.rcvif->if_flags & IFF_BROADCAST) { TAILQ_FOREACH(ifa, &m->m_pkthdr.rcvif->if_addrhead, ifa_link) { if (ifa->ifa_addr->sa_family != AF_INET) continue; |