Page MenuHomeFreeBSD

D57799.diff
No OneTemporary

D57799.diff

diff --git a/sys/net80211/ieee80211_crypto.c b/sys/net80211/ieee80211_crypto.c
--- a/sys/net80211/ieee80211_crypto.c
+++ b/sys/net80211/ieee80211_crypto.c
@@ -1025,7 +1025,8 @@
/*
* AAD for PV0 MPDUs:
*
- * FC with bits 4..6 and 11..13 masked to zero; 14 is always one
+ * FC + data frame - mask bits 4..6
+ * FC 11..13 masked to zero; 14 is always one
* A1 | A2 | A3
* SC with bits 4..15 (seq#) masked to zero
* A4 (if present)
@@ -1033,7 +1034,11 @@
*/
aad[0] = 0; /* AAD length >> 8 */
/* NB: aad[1] set below */
- aad[2] = wh->i_fc[0] & 0x8f; /* see above for bitfields */
+ /* Only mask bits 4,5,6 if its a data frame */
+ aad[2] = wh->i_fc[0];
+ if (IEEE80211_IS_DATA(wh))
+ aad[2] &= 0x8f; /* see above for bitfields */
+
aad[3] = wh->i_fc[1] & 0xc7; /* see above for bitfields */
/* mask aad[3] b7 if frame is data frame w/ QoS control field */
if (IEEE80211_IS_QOS_ANY(wh))

File Metadata

Mime Type
text/plain
Expires
Sat, Aug 1, 6:10 AM (3 h, 45 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
34581732
Default Alt Text
D57799.diff (918 B)

Event Timeline