]> git.ipfire.org Git - thirdparty/hostap.git/commitdiff
atheros: Do not use struct ieee80211_mgmt::u.probe_req
authorJouni Malinen <j@w1.fi>
Sat, 2 Apr 2016 13:52:43 +0000 (16:52 +0300)
committerJouni Malinen <j@w1.fi>
Sat, 2 Apr 2016 13:55:02 +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/drivers/driver_atheros.c

index a5a379eb1d28a3c5fa14e0f89794c56c23b567b6..ba3cad0b53fc207b6961479648743acec4bf0f09 100644 (file)
@@ -855,16 +855,15 @@ static void atheros_raw_receive(void *ctx, const u8 *src_addr, const u8 *buf,
                   (int) len);
 
        if (stype == WLAN_FC_STYPE_PROBE_REQ) {
-               if (len < IEEE80211_HDRLEN + sizeof(mgmt->u.probe_req))
+               if (len < IEEE80211_HDRLEN)
                        return;
 
                os_memset(&event, 0, sizeof(event));
                event.rx_probe_req.sa = mgmt->sa;
                event.rx_probe_req.da = mgmt->da;
                event.rx_probe_req.bssid = mgmt->bssid;
-               event.rx_probe_req.ie = mgmt->u.probe_req.variable;
-               event.rx_probe_req.ie_len =
-                       len - (IEEE80211_HDRLEN + sizeof(mgmt->u.probe_req));
+               event.rx_probe_req.ie = buf + IEEE80211_HDRLEN;
+               event.rx_probe_req.ie_len = len - IEEE80211_HDRLEN;
                wpa_supplicant_event(drv->hapd, EVENT_RX_PROBE_REQ, &event);
                return;
        }