]> git.ipfire.org Git - thirdparty/hostap.git/commitdiff
AP: Do not use struct ieee80211_mgmt::u.probe_req
authorJouni Malinen <j@w1.fi>
Sat, 2 Apr 2016 13:49:50 +0000 (16:49 +0300)
committerJouni Malinen <j@w1.fi>
Sat, 2 Apr 2016 13:55:01 +0000 (16:55 +0300)
This struct in the union is empty, but the design of using a zero-length
u8 array here is not fully compatible with C++ and can result in
undesired compiler warnings. Since there are no non-IE fields in the
Probe Request frames, get the location of the variable length IEs simply
by using the pointer to the frame header and the known header length.

Signed-off-by: Jouni Malinen <j@w1.fi>
src/ap/beacon.c

index 0720e141935855ba4b4e3c2e8345ed711b3a02be..19bff7bb855f241e59bf0ea9fbaf2238b591638b 100644 (file)
@@ -685,12 +685,12 @@ void handle_probe_req(struct hostapd_data *hapd,
        u16 csa_offs[2];
        size_t csa_offs_len;
 
-       ie = mgmt->u.probe_req.variable;
-       if (len < IEEE80211_HDRLEN + sizeof(mgmt->u.probe_req))
+       if (len < IEEE80211_HDRLEN)
                return;
+       ie = ((const u8 *) mgmt) + IEEE80211_HDRLEN;
        if (hapd->iconf->track_sta_max_num)
                sta_track_add(hapd->iface, mgmt->sa);
-       ie_len = len - (IEEE80211_HDRLEN + sizeof(mgmt->u.probe_req));
+       ie_len = len - IEEE80211_HDRLEN;
 
        for (i = 0; hapd->probereq_cb && i < hapd->num_probereq_cb; i++)
                if (hapd->probereq_cb[i].cb(hapd->probereq_cb[i].ctx,