return;
}
+ if (bss->group_cipher & (WPA_CIPHER_TKIP | WPA_CIPHER_CCMP) &&
+ !(data[3] & 0x20)) {
+ wpa_printf(MSG_INFO, "Expected TKIP/CCMP frame from "
+ MACSTR " did not have ExtIV bit set to 1",
+ MAC2STR(bss->bssid));
+ return;
+ }
+
keyid = data[3] >> 6;
if (bss->gtk_len[keyid] == 0) {
wpa_printf(MSG_MSGDUMP, "No GTK known to decrypt the frame "
return;
}
+ if (sta->pairwise_cipher & (WPA_CIPHER_TKIP | WPA_CIPHER_CCMP) &&
+ !(data[3] & 0x20)) {
+ wpa_printf(MSG_INFO, "Expected TKIP/CCMP frame from "
+ MACSTR " did not have ExtIV bit set to 1",
+ MAC2STR(src));
+ return;
+ }
+
keyid = data[3] >> 6;
if (keyid != 0) {
wpa_printf(MSG_INFO, "Unexpected non-zero KeyID %d in "
return NULL;
}
- keyid = data[3] >> 6;
+ if (len < 24 + 4)
+ return NULL;
+
+ if (!(data[24 + 3] & 0x20)) {
+ wpa_printf(MSG_INFO, "Expected CCMP frame from " MACSTR
+ " did not have ExtIV bit set to 1",
+ MAC2STR(hdr->addr2));
+ return NULL;
+ }
+
+ keyid = data[24 + 3] >> 6;
if (keyid != 0) {
wpa_printf(MSG_INFO, "Unexpected non-zero KeyID %d in "
"individually addressed Management frame from "