wlantest: Do not ignore RSN/WPA/OSEN element before full BSS info
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>
This commit is contained in:
parent
5420bcf477
commit
878723b920
3 changed files with 8 additions and 3 deletions
|
@ -223,6 +223,7 @@ void bss_update(struct wlantest *wt, struct wlantest_bss *bss,
|
||||||
if (!update)
|
if (!update)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
bss->beacon_seen = 1;
|
||||||
bss->prev_capab_info = bss->capab_info;
|
bss->prev_capab_info = bss->capab_info;
|
||||||
bss->proto = 0;
|
bss->proto = 0;
|
||||||
bss->pairwise_cipher = 0;
|
bss->pairwise_cipher = 0;
|
||||||
|
|
|
@ -66,7 +66,8 @@ void sta_update_assoc(struct wlantest_sta *sta, struct ieee802_11_elems *elems)
|
||||||
struct wpa_ie_data data;
|
struct wpa_ie_data data;
|
||||||
struct wlantest_bss *bss = sta->bss;
|
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 "
|
wpa_printf(MSG_INFO, "WPA IE included in Association Request "
|
||||||
"frame from " MACSTR " even though BSS does not "
|
"frame from " MACSTR " even though BSS does not "
|
||||||
"use WPA - ignore IE",
|
"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;
|
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 "
|
wpa_printf(MSG_INFO, "RSN IE included in Association Request "
|
||||||
"frame from " MACSTR " even though BSS does not "
|
"frame from " MACSTR " even though BSS does not "
|
||||||
"use RSN - ignore IE",
|
"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;
|
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 "
|
wpa_printf(MSG_INFO, "OSEN IE included in Association Request "
|
||||||
"frame from " MACSTR " even though BSS does not "
|
"frame from " MACSTR " even though BSS does not "
|
||||||
"use OSEN - ignore IE",
|
"use OSEN - ignore IE",
|
||||||
|
|
|
@ -129,6 +129,7 @@ struct wlantest_bss {
|
||||||
u16 prev_capab_info;
|
u16 prev_capab_info;
|
||||||
u8 ssid[32];
|
u8 ssid[32];
|
||||||
size_t ssid_len;
|
size_t ssid_len;
|
||||||
|
int beacon_seen;
|
||||||
int proberesp_seen;
|
int proberesp_seen;
|
||||||
int parse_error_reported;
|
int parse_error_reported;
|
||||||
u8 wpaie[257];
|
u8 wpaie[257];
|
||||||
|
|
Loading…
Reference in a new issue