diff mbox series

[01/12] driver_nl80211: Register for SAE AUTH frames more strictly

Message ID 20200224091437.15212-2-ilan.peer@intel.com
State Accepted
Headers show
Series Preparations for Pre association Security Negotiation(PASN) Support | expand

Commit Message

Peer, Ilan Feb. 24, 2020, 9:14 a.m. UTC
From: Andrei Otcheretianski <andrei.otcheretianski@intel.com>

If the driver requires external SAE authentication, it would result in
registration for all authentication frames, so even non SAE auth frames
might be forwarded to user space instead of being handled internally.
Fix this by using more strict match pattern, limiting the registration
to the SAE authentication algorithm only.

Signed-off-by: Andrei Otcheretianski <andrei.otcheretianski@intel.com>
---
 src/drivers/driver_nl80211.c | 13 +++++++------
 1 file changed, 7 insertions(+), 6 deletions(-)
diff mbox series

Patch

diff --git a/src/drivers/driver_nl80211.c b/src/drivers/driver_nl80211.c
index 659f6584d4..438fc16252 100644
--- a/src/drivers/driver_nl80211.c
+++ b/src/drivers/driver_nl80211.c
@@ -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,14 +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 AUTH frames */
+		nl80211_register_frame(bss, bss->nl_mgmt, type,
+				       (u8 *) "\x03\x00", 2);
 
 #ifdef CONFIG_INTERWORKING
 	/* QoS Map Configure */