]> git.ipfire.org Git - thirdparty/hostap.git/commitdiff
wlantest: Verify that TKIP/CCMP frames set ExtIV=1
authorJouni Malinen <j@w1.fi>
Sat, 13 Nov 2010 10:54:07 +0000 (12:54 +0200)
committerJouni Malinen <j@w1.fi>
Sat, 13 Nov 2010 10:54:07 +0000 (12:54 +0200)
wlantest/rx_data.c
wlantest/rx_mgmt.c

index ab0ab0f3ffd8cae86b65b308a0bcae41adde1982..24de59f00f601579387a59c580fbfb087cda7ece 100644 (file)
@@ -971,6 +971,14 @@ static void rx_data_bss_prot_group(struct wlantest *wt,
                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 "
@@ -1046,6 +1054,14 @@ static void rx_data_bss_prot(struct wlantest *wt,
                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 "
index 53a6396c8d43b1c3f74f40b40a77dc3a89d6fe05..d58c68574da5236f67e81322131cd3846dc106d6 100644 (file)
@@ -676,7 +676,17 @@ static u8 * mgmt_ccmp_decrypt(struct wlantest *wt, const u8 *data, size_t len,
                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 "