⬢ DragonFlyBSD Kernel Audit
DF-3322 / fix.diff
← back to finding ↓ download raw
--- a/sys/netinet/ip_input.c
+++ b/sys/netinet/ip_input.c
@@ -541-548
 	/* 127/8 must not appear on wire - RFC1122 */
 	if ((ntohl(ip->ip_dst.s_addr) >> IN_CLASSA_NSHIFT) == IN_LOOPBACKNET ||
 	    (ntohl(ip->ip_src.s_addr) >> IN_CLASSA_NSHIFT) == IN_LOOPBACKNET) {
-		if (!(m->m_pkthdr.rcvif->if_flags & IFF_LOOPBACK)) {
+		if (m->m_pkthdr.rcvif == NULL ||		/* DF-3322 */
+		    !(m->m_pkthdr.rcvif->if_flags & IFF_LOOPBACK)) {
 			ipstat.ips_badaddr++;
 			goto bad;
 		}