struct sta_info *sta;
int new_assoc, res;
struct ieee802_11_elems elems;
-#ifdef CONFIG_P2P
+#if defined(CONFIG_P2P) || defined(CONFIG_WPS)
const u8 *all_ies = ie;
size_t all_ies_len = ielen;
-#endif /* CONFIG_P2P */
+#endif /* CONFIG_P2P || CONFIG_WPS */
if (addr == NULL) {
/*
} else if (hapd->conf->wps_state) {
#ifdef CONFIG_WPS
struct wpabuf *wps;
- wps = ieee802_11_vendor_ie_concat(ie, ielen,
- WPS_IE_VENDOR_TYPE);
+ if (all_ies)
+ wps = ieee802_11_vendor_ie_concat(all_ies, all_ies_len,
+ WPS_IE_VENDOR_TYPE);
+ else
+ wps = NULL;
#ifdef CONFIG_WPS_STRICT
- if (ie) {
- 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;
- }
+ 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;
}
#endif /* CONFIG_WPS_STRICT */
- if (ie && ielen > 4 && ie[0] == 0xdd && ie[1] >= 4 &&
- os_memcmp(ie + 2, "\x00\x50\xf2\x04", 4) == 0) {
+ if (wps) {
sta->flags |= WLAN_STA_WPS;
- if (wps && wps_is_20(wps)) {
+ if (wps_is_20(wps)) {
wpa_printf(MSG_DEBUG, "WPS: STA supports "
"WPS 2.0");
sta->flags |= WLAN_STA_WPS2;