nl80211: Register for SAE Authentication frames more strictly
If the driver requires external SAE authentication, it would result in registration for all Authentication frames, so even non-SAE Authentication frames might be forwarded to user space instead of being handled internally. Fix this by using a more strict match pattern, limiting the registration to the SAE authentication algorithm only. Signed-off-by: Andrei Otcheretianski <andrei.otcheretianski@intel.com>
This commit is contained in:
parent
7a9c367225
commit
d046f2a9f9
1 changed files with 7 additions and 5 deletions
|
@ -2182,6 +2182,7 @@ static int nl80211_init_connect_handle(struct i802_bss *bss)
|
|||
static int nl80211_mgmt_subscribe_non_ap(struct i802_bss *bss)
|
||||
{
|
||||
struct wpa_driver_nl80211_data *drv = bss->drv;
|
||||
u16 type = (WLAN_FC_TYPE_MGMT << 2) | (WLAN_FC_STYPE_AUTH << 4);
|
||||
int ret = 0;
|
||||
|
||||
if (nl80211_alloc_mgmt_handle(bss))
|
||||
|
@ -2189,13 +2190,14 @@ static int nl80211_mgmt_subscribe_non_ap(struct i802_bss *bss)
|
|||
wpa_printf(MSG_DEBUG, "nl80211: Subscribe to mgmt frames with non-AP "
|
||||
"handle %p", bss->nl_mgmt);
|
||||
|
||||
if (drv->nlmode == NL80211_IFTYPE_ADHOC ||
|
||||
((drv->capa.flags & WPA_DRIVER_FLAGS_SAE) &&
|
||||
!(drv->capa.flags & WPA_DRIVER_FLAGS_SME))) {
|
||||
u16 type = (WLAN_FC_TYPE_MGMT << 2) | (WLAN_FC_STYPE_AUTH << 4);
|
||||
|
||||
if (drv->nlmode == NL80211_IFTYPE_ADHOC) {
|
||||
/* register for any AUTH message */
|
||||
nl80211_register_frame(bss, bss->nl_mgmt, type, NULL, 0);
|
||||
} else if ((drv->capa.flags & WPA_DRIVER_FLAGS_SAE) &&
|
||||
!(drv->capa.flags & WPA_DRIVER_FLAGS_SME)) {
|
||||
/* register for SAE Authentication frames */
|
||||
nl80211_register_frame(bss, bss->nl_mgmt, type,
|
||||
(u8 *) "\x03\x00", 2);
|
||||
}
|
||||
|
||||
#ifdef CONFIG_INTERWORKING
|
||||
|
|
Loading…
Reference in a new issue