⬢ DragonFlyBSD Kernel Audit
DF-3284 / fix.diff
← back to finding ↓ download raw
--- a/sys/netproto/802_11/wlan/ieee80211_output.c
+++ b/sys/netproto/802_11/wlan/ieee80211_output.c
@@ raw-xmit path (before ieee80211_classify)
 	/* XXX assumes an 802.3 frame */
-	if (ieee80211_classify(ni, m))
+	if (m->m_pkthdr.len < sizeof(struct ether_header) +
+	    ((mtod(m, struct ether_header *)->ether_type ==
+	      htons(ETHERTYPE_IP)) ? sizeof(struct ip) : 0)) {
+		/* DF-3284: classify parses the frame as 802.3 */
+		senderr(EIO);
+	}
+	if (ieee80211_classify(ni, m))