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)
|
static int nl80211_mgmt_subscribe_non_ap(struct i802_bss *bss)
|
||||||
{
|
{
|
||||||
struct wpa_driver_nl80211_data *drv = bss->drv;
|
struct wpa_driver_nl80211_data *drv = bss->drv;
|
||||||
|
u16 type = (WLAN_FC_TYPE_MGMT << 2) | (WLAN_FC_STYPE_AUTH << 4);
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
|
|
||||||
if (nl80211_alloc_mgmt_handle(bss))
|
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 "
|
wpa_printf(MSG_DEBUG, "nl80211: Subscribe to mgmt frames with non-AP "
|
||||||
"handle %p", bss->nl_mgmt);
|
"handle %p", bss->nl_mgmt);
|
||||||
|
|
||||||
if (drv->nlmode == NL80211_IFTYPE_ADHOC ||
|
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);
|
|
||||||
|
|
||||||
/* register for any AUTH message */
|
/* register for any AUTH message */
|
||||||
nl80211_register_frame(bss, bss->nl_mgmt, type, NULL, 0);
|
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
|
#ifdef CONFIG_INTERWORKING
|
||||||
|
|
Loading…
Reference in a new issue