⬢ DragonFlyBSD Kernel Audit
DF-3325 / fix.diff
← back to finding ↓ download raw
--- a/sys/netproto/802_11/wlan/ieee80211_hostap.c
+++ b/sys/netproto/802_11/wlan/ieee80211_hostap.c
@@ -578,6 +578,11 @@ ieee80211_hostap_input(...)
 		IEEE80211_RSSI_LPF(ni->ni_avgrssi, rssi);
 		ni->ni_noise = nf;
 		if (IEEE80211_HAS_SEQ(type, subtype)) {
+			/* DF-3325: the pre-dispatch seq/QoS reads touch
+			 * i_seq(22)/i_qos(24); require a full QoS header */
+			if (m->m_pkthdr.len <
+			    (IEEE80211_QOS_HAS_SEQ(wh) ?
+			     sizeof(struct ieee80211_qosframe) :
+			     sizeof(struct ieee80211_frame)))
+				goto out;
 			uint8_t tid = ieee80211_gettid(wh);