]> git.ipfire.org Git - thirdparty/hostap.git/commitdiff
Simplify ERP element parsing
authorJouni Malinen <j@w1.fi>
Sun, 19 Apr 2015 13:35:52 +0000 (16:35 +0300)
committerJouni Malinen <j@w1.fi>
Wed, 22 Apr 2015 19:05:11 +0000 (22:05 +0300)
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>
src/ap/ap_list.c
src/common/ieee802_11_common.c
src/common/ieee802_11_common.h

index 8cccd833adc7b425476f6f04914270da52fd575b..47a2c4bd77ef77b0bb5c7649675ae8eecb93e25c 100644 (file)
@@ -193,7 +193,7 @@ void ap_list_process_beacon(struct hostapd_iface *iface,
                          elems->supp_rates, elems->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];
        else
                ap->erp = -1;
index 140f9207023c0aa3b4a2ec431e3f4a4de4485453..69ffa8f4cf9718af6877f31ff8a9064d83852fb4 100644 (file)
@@ -223,8 +223,9 @@ ParseRes ieee802_11_parse_elems(const u8 *start, size_t len,
                        elems->challenge_len = elen;
                        break;
                case WLAN_EID_ERP_INFO:
+                       if (elen < 1)
+                               break;
                        elems->erp_info = pos;
-                       elems->erp_info_len = elen;
                        break;
                case WLAN_EID_EXT_SUPP_RATES:
                        elems->ext_supp_rates = pos;
index 0a71bc86f5fa34c4791cfe37b0c4c9e1f91ecfd9..ae99f7f5dc493e179b16e12e35019b83aa7d092d 100644 (file)
@@ -52,7 +52,6 @@ struct ieee802_11_elems {
        u8 ssid_len;
        u8 supp_rates_len;
        u8 challenge_len;
-       u8 erp_info_len;
        u8 ext_supp_rates_len;
        u8 wpa_ie_len;
        u8 rsn_ie_len;