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:
Jouni Malinen 2015-04-19 16:35:52 +03:00
parent f87c99c787
commit e8997b9407
3 changed files with 3 additions and 3 deletions

View file

@ -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;

View file

@ -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;

View file

@ -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;