if (!sta->fils_pending_assoc_req)
return;
- ieee802_11_parse_elems(sta->fils_pending_assoc_req,
- sta->fils_pending_assoc_req_len, &elems, 0);
- if (!elems.fils_session) {
+ if (ieee802_11_parse_elems(sta->fils_pending_assoc_req,
+ sta->fils_pending_assoc_req_len, &elems,
+ 0) == ParseFailed ||
+ !elems.fils_session) {
wpa_printf(MSG_DEBUG, "%s failed to find FILS Session element",
__func__);
return;
hostapd_logger(hapd, addr, HOSTAPD_MODULE_IEEE80211,
HOSTAPD_LEVEL_INFO, "associated");
- ieee802_11_parse_elems(req_ies, req_ies_len, &elems, 0);
+ if (ieee802_11_parse_elems(req_ies, req_ies_len, &elems, 0) ==
+ ParseFailed) {
+ wpa_printf(MSG_DEBUG, "%s: Could not parse elements", __func__);
+ return -1;
+ }
+
if (elems.wps_ie) {
ie = elems.wps_ie - 2;
ielen = elems.wps_ie_len + 2;
*pri_chan = *sec_chan = 0;
- ieee802_11_parse_elems((u8 *) (bss + 1), bss->ie_len, &elems, 0);
- if (elems.ht_operation) {
+ if (ieee802_11_parse_elems((u8 *) (bss + 1), bss->ie_len, &elems, 0) !=
+ ParseFailed && elems.ht_operation) {
oper = (struct ieee80211_ht_operation *) elems.ht_operation;
*pri_chan = oper->primary_chan;
if (oper->ht_param & HT_INFO_HT_PARAM_STA_CHNL_WIDTH) {
if (bss->freq < start || bss->freq > end || bss->freq == pri_freq)
return 0;
- ieee802_11_parse_elems((u8 *) (bss + 1), bss->ie_len, &elems, 0);
+ if (ieee802_11_parse_elems((u8 *) (bss + 1), bss->ie_len, &elems, 0) ==
+ ParseFailed)
+ return 0;
+
if (!elems.ht_capabilities) {
wpa_printf(MSG_DEBUG, "Found overlapping legacy BSS: "
MACSTR " freq=%d", MAC2STR(bss->bssid), bss->freq);
}
}
- ieee802_11_parse_elems((u8 *) (bss + 1), bss->ie_len, &elems,
- 0);
- if (elems.ht_capabilities) {
+ if (ieee802_11_parse_elems((u8 *) (bss + 1), bss->ie_len,
+ &elems, 0) != ParseFailed &&
+ elems.ht_capabilities) {
struct ieee80211_ht_capabilities *ht_cap =
(struct ieee80211_ht_capabilities *)
elems.ht_capabilities;
{
struct ieee802_11_elems elems;
- ieee802_11_parse_elems(data, len, &elems, 0);
+ if (ieee802_11_parse_elems(data, len, &elems, 0) == ParseFailed)
+ return -1;
+
if (elems.ds_params)
msg->ds_params = elems.ds_params;
if (elems.ssid)