Page MenuHomeFreeBSD

D57798.id.diff
No OneTemporary

D57798.id.diff

diff --git a/sys/net80211/ieee80211_crypto_ccmp.c b/sys/net80211/ieee80211_crypto_ccmp.c
--- a/sys/net80211/ieee80211_crypto_ccmp.c
+++ b/sys/net80211/ieee80211_crypto_ccmp.c
@@ -569,11 +569,16 @@
uint8_t aad[2 * AES_BLOCK_LEN], b0[AES_BLOCK_LEN], b[AES_BLOCK_LEN],
e[AES_BLOCK_LEN], s0[AES_BLOCK_LEN];
uint8_t *pos;
- bool is_mfp = false; /* XXX for now */
+ bool is_mfp = false;
ctx->cc_vap->iv_stats.is_crypto_ccmp++;
wh = mtod(m, struct ieee80211_frame *);
+
+ /* Check if node has MFP negotiated, and this is a mgmt frame */
+ if ((ni->ni_flags & IEEE80211_NODE_MFP) && IEEE80211_IS_MGMT(wh))
+ is_mfp = true;
+
data_len = m->m_pkthdr.len - (hdrlen + ccmp_get_header_len(key));
ccmp_init_blocks(&ctx->cc_aes, wh, ccmp_get_ccm_m(key),
key->wk_keytsc, data_len, is_mfp, b0, aad, b, s0);
@@ -720,7 +725,7 @@
int i;
uint8_t *pos;
u_int space;
- bool is_mfp = false; /* XXX for now */
+ bool is_mfp = false;
rxs = ieee80211_get_rx_params_ptr(m);
if ((rxs != NULL) && (rxs->c_pktflags & IEEE80211_RX_F_DECRYPTED) != 0)
@@ -729,6 +734,11 @@
ctx->cc_vap->iv_stats.is_crypto_ccmp++;
wh = mtod(m, struct ieee80211_frame *);
+
+ /* Check if node has MFP negotiated, and this is a mgmt frame */
+ if ((ni->ni_flags & IEEE80211_NODE_MFP) && IEEE80211_IS_MGMT(wh))
+ is_mfp = true;
+
data_len = m->m_pkthdr.len -
(hdrlen + ccmp_get_header_len(key) + ccmp_get_trailer_len(key));
ccmp_init_blocks(&ctx->cc_aes, wh, ccmp_get_ccm_m(key), pn,

File Metadata

Mime Type
text/plain
Expires
Sat, Aug 8, 3:33 AM (17 h, 47 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
34303888
Default Alt Text
D57798.id.diff (1 KB)

Event Timeline