3
0
mirror of https://git.kernel.org/pub/scm/network/wireless/iwd.git synced 2024-11-25 17:59:25 +01:00

frame-xchg: Drop the BSSID check for incoming frames

The BSSID (address_3) in response frames was being checked to be the
same as in the request frame, or all-zeros for faulty drivers.  At least
one Wi-Fi Display device sends a GO Negotiation Response with the BSSID
different from its Device Address (by 1 bit) and I didn't see an easy
way to obtain that address beforhand so we can "whitelist" it for this
check, so just drop that check for now.

ANQP didn't have this check before it started using frame-xchg so it
shouldn't be critical.
This commit is contained in:
Andrew Zaborowski 2020-07-21 02:45:40 +02:00 committed by Denis Kenzior
parent 5600c736b8
commit 40c091ac7f

View File

@ -992,14 +992,11 @@ static bool frame_xchg_resp_handle(const struct mmpdu_header *mpdu,
return false;
/*
* Is the received frame's BSSID same as the transmitted frame's
* BSSID, may have to be moved to the user callback if there are
* usages where this is false. Some drivers (brcmfmac) can't
* report the BSSID so check for all-zeros too.
* BSSID (address_3) check not practical because some Linux
* drivers report all-zero values and some remote devices send
* wrong addresses. But the frame callback is free to perform
* its own check.
*/
if (memcmp(mpdu->address_3, fx->tx_mpdu->address_3, 6) &&
!util_mem_is_zero(mpdu->address_3, 6))
return false;
for (entry = l_queue_get_entries(fx->rx_watches);
entry; entry = entry->next) {