AP: Validate management frame length
authorJouni Malinen <jouni.malinen@atheros.com>
Mon, 17 Jan 2011 10:21:29 +0000 (12:21 +0200)
committerJouni Malinen <j@w1.fi>
Mon, 17 Jan 2011 10:21:29 +0000 (12:21 +0200)
Make sure that received management frames are long enough before
processing them. This avoids a potential segmentation fault if a
driver delivers an invalid frame all the way to hostapd.

src/ap/beacon.c
src/ap/ieee802_11.c

index 55c0654..380fb8d 100644 (file)
@@ -211,6 +211,8 @@ void handle_probe_req(struct hostapd_data *hapd,
        size_t i;
 
        ie = mgmt->u.probe_req.variable;
+       if (len < IEEE80211_HDRLEN + sizeof(mgmt->u.probe_req))
+               return;
        ie_len = len - (IEEE80211_HDRLEN + sizeof(mgmt->u.probe_req));
 
        for (i = 0; hapd->probereq_cb && i < hapd->num_probereq_cb; i++)
index 94898cc..f65b79e 100644 (file)
@@ -1460,6 +1460,9 @@ void ieee802_11_mgmt(struct hostapd_data *hapd, const u8 *buf, size_t len,
        int broadcast;
        u16 fc, stype;
 
+       if (len < 24)
+               return;
+
        mgmt = (struct ieee80211_mgmt *) buf;
        fc = le_to_host16(mgmt->frame_control);
        stype = WLAN_FC_GET_STYPE(fc);