WPS: Use strict validation of (Re)AssocReq only if IEs are known
This commit is contained in:
parent
5dac11e027
commit
6e432d3f10
1 changed files with 12 additions and 9 deletions
|
@ -157,17 +157,20 @@ int hostapd_notif_assoc(struct hostapd_data *hapd, const u8 *addr,
|
||||||
}
|
}
|
||||||
} else if (hapd->conf->wps_state) {
|
} else if (hapd->conf->wps_state) {
|
||||||
#ifdef CONFIG_WPS_STRICT
|
#ifdef CONFIG_WPS_STRICT
|
||||||
|
if (ie) {
|
||||||
struct wpabuf *wps;
|
struct wpabuf *wps;
|
||||||
wps = ieee802_11_vendor_ie_concat(ie, ielen,
|
wps = ieee802_11_vendor_ie_concat(ie, ielen,
|
||||||
WPS_IE_VENDOR_TYPE);
|
WPS_IE_VENDOR_TYPE);
|
||||||
if (wps && wps_validate_assoc_req(wps) < 0) {
|
if (wps && wps_validate_assoc_req(wps) < 0) {
|
||||||
hostapd_drv_sta_disassoc(hapd, sta->addr,
|
hostapd_drv_sta_disassoc(
|
||||||
|
hapd, sta->addr,
|
||||||
WLAN_REASON_INVALID_IE);
|
WLAN_REASON_INVALID_IE);
|
||||||
ap_free_sta(hapd, sta);
|
ap_free_sta(hapd, sta);
|
||||||
wpabuf_free(wps);
|
wpabuf_free(wps);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
wpabuf_free(wps);
|
wpabuf_free(wps);
|
||||||
|
}
|
||||||
#endif /* CONFIG_WPS_STRICT */
|
#endif /* CONFIG_WPS_STRICT */
|
||||||
if (ie && ielen > 4 && ie[0] == 0xdd && ie[1] >= 4 &&
|
if (ie && ielen > 4 && ie[0] == 0xdd && ie[1] >= 4 &&
|
||||||
os_memcmp(ie + 2, "\x00\x50\xf2\x04", 4) == 0) {
|
os_memcmp(ie + 2, "\x00\x50\xf2\x04", 4) == 0) {
|
||||||
|
|
Loading…
Reference in a new issue