WPS: Wait for EAPOL-Start unless WPS 2.0 station as workaround
Extend the code that waits for the station to send EAPOL-Start before initiating EAPOL authenticator operations to cover the case where the station includes WPS IE in (Re)Association Request frame if that IE does not include support for WPS 2.0. While this should not really be needed, this may help with some deployed WPS 1.0 stations that do not support EAPOL operations correctly and may get confused of the EAP-Request/Identity packets that would show up twice if EAPOL-Start is transmitted.
This commit is contained in:
parent
fb91db5639
commit
17f6b90056
7 changed files with 68 additions and 17 deletions
|
@ -701,7 +701,7 @@ static u16 check_assoc_ies(struct hostapd_data *hapd, struct sta_info *sta,
|
|||
}
|
||||
|
||||
#ifdef CONFIG_WPS
|
||||
sta->flags &= ~(WLAN_STA_WPS | WLAN_STA_MAYBE_WPS);
|
||||
sta->flags &= ~(WLAN_STA_WPS | WLAN_STA_MAYBE_WPS | WLAN_STA_WPS2);
|
||||
if (hapd->conf->wps_state && elems.wps_ie) {
|
||||
wpa_printf(MSG_DEBUG, "STA included WPS IE in (Re)Association "
|
||||
"Request - assume WPS is used");
|
||||
|
@ -709,6 +709,10 @@ static u16 check_assoc_ies(struct hostapd_data *hapd, struct sta_info *sta,
|
|||
wpabuf_free(sta->wps_ie);
|
||||
sta->wps_ie = ieee802_11_vendor_ie_concat(ies, ies_len,
|
||||
WPS_IE_VENDOR_TYPE);
|
||||
if (sta->wps_ie && wps_is_20(sta->wps_ie)) {
|
||||
wpa_printf(MSG_DEBUG, "WPS: STA supports WPS 2.0");
|
||||
sta->flags |= WLAN_STA_WPS2;
|
||||
}
|
||||
wpa_ie = NULL;
|
||||
wpa_ie_len = 0;
|
||||
if (sta->wps_ie && wps_validate_assoc_req(sta->wps_ie) < 0) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue