wpa_supplicant: Do not use struct ieee80211_mgmt::u.probe_req
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>
This commit is contained in:
parent
e1b99620c9
commit
c01120a05f
1 changed files with 13 additions and 10 deletions
|
@ -3706,12 +3706,14 @@ void wpa_supplicant_event(void *ctx, enum wpa_event_type event,
|
|||
#endif /* CONFIG_AP */
|
||||
#ifdef CONFIG_P2P
|
||||
if (stype == WLAN_FC_STYPE_PROBE_REQ &&
|
||||
data->rx_mgmt.frame_len > 24) {
|
||||
data->rx_mgmt.frame_len > IEEE80211_HDRLEN) {
|
||||
const u8 *src = mgmt->sa;
|
||||
const u8 *ie = mgmt->u.probe_req.variable;
|
||||
size_t ie_len = data->rx_mgmt.frame_len -
|
||||
(mgmt->u.probe_req.variable -
|
||||
data->rx_mgmt.frame);
|
||||
const u8 *ie;
|
||||
size_t ie_len;
|
||||
|
||||
ie = data->rx_mgmt.frame + IEEE80211_HDRLEN;
|
||||
ie_len = data->rx_mgmt.frame_len -
|
||||
IEEE80211_HDRLEN;
|
||||
wpas_p2p_probe_req_rx(
|
||||
wpa_s, src, mgmt->da,
|
||||
mgmt->bssid, ie, ie_len,
|
||||
|
@ -3751,11 +3753,12 @@ void wpa_supplicant_event(void *ctx, enum wpa_event_type event,
|
|||
}
|
||||
|
||||
if (stype == WLAN_FC_STYPE_PROBE_REQ &&
|
||||
data->rx_mgmt.frame_len > 24) {
|
||||
const u8 *ie = mgmt->u.probe_req.variable;
|
||||
size_t ie_len = data->rx_mgmt.frame_len -
|
||||
(mgmt->u.probe_req.variable -
|
||||
data->rx_mgmt.frame);
|
||||
data->rx_mgmt.frame_len > IEEE80211_HDRLEN) {
|
||||
const u8 *ie;
|
||||
size_t ie_len;
|
||||
|
||||
ie = data->rx_mgmt.frame + IEEE80211_HDRLEN;
|
||||
ie_len = data->rx_mgmt.frame_len - IEEE80211_HDRLEN;
|
||||
|
||||
wpas_notify_preq(wpa_s, mgmt->sa, mgmt->da,
|
||||
mgmt->bssid, ie, ie_len,
|
||||
|
|
Loading…
Reference in a new issue