Simplify ERP element parsing
Check the element length in the parser and remove the length field from struct ieee802_11_elems since the only allowed element length is one. Signed-off-by: Jouni Malinen <j@w1.fi>
This commit is contained in:
parent
f87c99c787
commit
e8997b9407
3 changed files with 3 additions and 3 deletions
|
@ -193,7 +193,7 @@ void ap_list_process_beacon(struct hostapd_iface *iface,
|
||||||
elems->supp_rates, elems->supp_rates_len,
|
elems->supp_rates, elems->supp_rates_len,
|
||||||
elems->ext_supp_rates, elems->ext_supp_rates_len);
|
elems->ext_supp_rates, elems->ext_supp_rates_len);
|
||||||
|
|
||||||
if (elems->erp_info && elems->erp_info_len == 1)
|
if (elems->erp_info)
|
||||||
ap->erp = elems->erp_info[0];
|
ap->erp = elems->erp_info[0];
|
||||||
else
|
else
|
||||||
ap->erp = -1;
|
ap->erp = -1;
|
||||||
|
|
|
@ -223,8 +223,9 @@ ParseRes ieee802_11_parse_elems(const u8 *start, size_t len,
|
||||||
elems->challenge_len = elen;
|
elems->challenge_len = elen;
|
||||||
break;
|
break;
|
||||||
case WLAN_EID_ERP_INFO:
|
case WLAN_EID_ERP_INFO:
|
||||||
|
if (elen < 1)
|
||||||
|
break;
|
||||||
elems->erp_info = pos;
|
elems->erp_info = pos;
|
||||||
elems->erp_info_len = elen;
|
|
||||||
break;
|
break;
|
||||||
case WLAN_EID_EXT_SUPP_RATES:
|
case WLAN_EID_EXT_SUPP_RATES:
|
||||||
elems->ext_supp_rates = pos;
|
elems->ext_supp_rates = pos;
|
||||||
|
|
|
@ -52,7 +52,6 @@ struct ieee802_11_elems {
|
||||||
u8 ssid_len;
|
u8 ssid_len;
|
||||||
u8 supp_rates_len;
|
u8 supp_rates_len;
|
||||||
u8 challenge_len;
|
u8 challenge_len;
|
||||||
u8 erp_info_len;
|
|
||||||
u8 ext_supp_rates_len;
|
u8 ext_supp_rates_len;
|
||||||
u8 wpa_ie_len;
|
u8 wpa_ie_len;
|
||||||
u8 rsn_ie_len;
|
u8 rsn_ie_len;
|
||||||
|
|
Loading…
Reference in a new issue