}
} 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) {