|
@@ -157,17 +157,20 @@ int hostapd_notif_assoc(struct hostapd_data *hapd, const u8 *addr,
|
|
|
}
|
|
|
} else if (hapd->conf->wps_state) {
|
|
|
#ifdef CONFIG_WPS_STRICT
|
|
|
- struct wpabuf *wps;
|
|
|
- wps = ieee802_11_vendor_ie_concat(ie, ielen,
|
|
|
- WPS_IE_VENDOR_TYPE);
|
|
|
- if (wps && wps_validate_assoc_req(wps) < 0) {
|
|
|
- hostapd_drv_sta_disassoc(hapd, sta->addr,
|
|
|
- WLAN_REASON_INVALID_IE);
|
|
|
- ap_free_sta(hapd, sta);
|
|
|
+ if (ie) {
|
|
|
+ struct wpabuf *wps;
|
|
|
+ wps = ieee802_11_vendor_ie_concat(ie, ielen,
|
|
|
+ WPS_IE_VENDOR_TYPE);
|
|
|
+ if (wps && wps_validate_assoc_req(wps) < 0) {
|
|
|
+ hostapd_drv_sta_disassoc(
|
|
|
+ hapd, sta->addr,
|
|
|
+ WLAN_REASON_INVALID_IE);
|
|
|
+ ap_free_sta(hapd, sta);
|
|
|
+ wpabuf_free(wps);
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
wpabuf_free(wps);
|
|
|
- return -1;
|
|
|
}
|
|
|
- wpabuf_free(wps);
|
|
|
#endif /* CONFIG_WPS_STRICT */
|
|
|
if (ie && ielen > 4 && ie[0] == 0xdd && ie[1] >= 4 &&
|
|
|
os_memcmp(ie + 2, "\x00\x50\xf2\x04", 4) == 0) {
|