]> git.ipfire.org Git - thirdparty/hostap.git/commitdiff
wlantest: Do not ignore RSN/WPA/OSEN element before full BSS info
authorJouni Malinen <jouni@qca.qualcomm.com>
Tue, 14 Nov 2017 10:55:48 +0000 (12:55 +0200)
committerJouni Malinen <j@w1.fi>
Tue, 14 Nov 2017 10:55:48 +0000 (12:55 +0200)
wlantest used to ignore RSN/WPA/OSEN element in (Re)Association Request
frame if no Beacon frame had been seen from the AP before the
association exchange. This could result in not being able to derive keys
properly. Work around this by skipping that step if the BSS entry is not
yet complete.

Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
wlantest/bss.c
wlantest/sta.c
wlantest/wlantest.h

index 03baf949f1c33fe2d8a2eac59f6cfd719abdbd0a..04afe2b29ac3af5ba818583f03a842f5c32ec85c 100644 (file)
@@ -223,6 +223,7 @@ void bss_update(struct wlantest *wt, struct wlantest_bss *bss,
        if (!update)
                return;
 
+       bss->beacon_seen = 1;
        bss->prev_capab_info = bss->capab_info;
        bss->proto = 0;
        bss->pairwise_cipher = 0;
index 1268b8a09bd675056a45ecdafbe9d5a5c3e7b2a4..1e53532a043ab623c98fa6e4b0e4b39a8e6b8930 100644 (file)
@@ -66,7 +66,8 @@ void sta_update_assoc(struct wlantest_sta *sta, struct ieee802_11_elems *elems)
        struct wpa_ie_data data;
        struct wlantest_bss *bss = sta->bss;
 
-       if (elems->wpa_ie && !bss->wpaie[0]) {
+       if (elems->wpa_ie && !bss->wpaie[0] &&
+           (bss->beacon_seen || bss->proberesp_seen)) {
                wpa_printf(MSG_INFO, "WPA IE included in Association Request "
                           "frame from " MACSTR " even though BSS does not "
                           "use WPA - ignore IE",
@@ -74,7 +75,8 @@ void sta_update_assoc(struct wlantest_sta *sta, struct ieee802_11_elems *elems)
                elems->wpa_ie = NULL;
        }
 
-       if (elems->rsn_ie && !bss->rsnie[0]) {
+       if (elems->rsn_ie && !bss->rsnie[0] &&
+           (bss->beacon_seen || bss->proberesp_seen)) {
                wpa_printf(MSG_INFO, "RSN IE included in Association Request "
                           "frame from " MACSTR " even though BSS does not "
                           "use RSN - ignore IE",
@@ -82,7 +84,8 @@ void sta_update_assoc(struct wlantest_sta *sta, struct ieee802_11_elems *elems)
                elems->rsn_ie = NULL;
        }
 
-       if (elems->osen && !bss->osenie[0]) {
+       if (elems->osen && !bss->osenie[0] &&
+           (bss->beacon_seen || bss->proberesp_seen)) {
                wpa_printf(MSG_INFO, "OSEN IE included in Association Request "
                           "frame from " MACSTR " even though BSS does not "
                           "use OSEN - ignore IE",
index 7a99b489c136749c7a118cf6a6f2a68272799253..bad005d81c1e13816e19fa07ae6d803c39656147 100644 (file)
@@ -129,6 +129,7 @@ struct wlantest_bss {
        u16 prev_capab_info;
        u8 ssid[32];
        size_t ssid_len;
+       int beacon_seen;
        int proberesp_seen;
        int parse_error_reported;
        u8 wpaie[257];