aboutsummaryrefslogtreecommitdiffstats
path: root/package/network/services/hostapd/patches/020-mesh-properly-handle-sae_password.patch
diff options
context:
space:
mode:
Diffstat (limited to 'package/network/services/hostapd/patches/020-mesh-properly-handle-sae_password.patch')
-rw-r--r--package/network/services/hostapd/patches/020-mesh-properly-handle-sae_password.patch57
1 files changed, 57 insertions, 0 deletions
diff --git a/package/network/services/hostapd/patches/020-mesh-properly-handle-sae_password.patch b/package/network/services/hostapd/patches/020-mesh-properly-handle-sae_password.patch
new file mode 100644
index 0000000000..17cc1e7383
--- /dev/null
+++ b/package/network/services/hostapd/patches/020-mesh-properly-handle-sae_password.patch
@@ -0,0 +1,57 @@
+From 30c1693f42326d4f927e76120492bc9593b8f739 Mon Sep 17 00:00:00 2001
+From: Daniel Golle <daniel@makrotopia.org>
+Date: Fri, 13 Apr 2018 00:42:10 +0200
+Subject: [PATCH] mesh: properly handle sae_password
+
+The recently introduced sae_password parameter is only handled properly
+in wpa_supplicant/sme.c while wpa_supplicant/mesh.c assumed that
+ssid->passphrase exclusively holds the secret.
+Import the logic from sme.c to mesh.c to allow having only sae_password
+set which otherwise throws this error:
+AP-ENABLED
+mesh: Passphrase for SAE not configured
+Init RSN failed. Deinit mesh...
+wlan1: interface state ENABLED->DISABLED
+AP-DISABLED
+Segmentation fault
+
+Signed-off-by: Daniel Golle <daniel@makrotopia.org>
+---
+ wpa_supplicant/mesh.c | 10 +++++++---
+ 1 file changed, 7 insertions(+), 3 deletions(-)
+
+diff --git a/wpa_supplicant/mesh.c b/wpa_supplicant/mesh.c
+index 22dec4822..0bf87245d 100644
+--- a/wpa_supplicant/mesh.c
++++ b/wpa_supplicant/mesh.c
+@@ -154,10 +154,14 @@ int wpas_mesh_init_rsn(struct wpa_supplicant *wpa_s)
+ struct wpa_ssid *ssid = wpa_s->current_ssid;
+ struct hostapd_data *bss = ifmsh->bss[0];
+ static int default_groups[] = { 19, 20, 21, 25, 26, -1 };
++ const char *password;
+ size_t len;
+
+ if (mconf->security != MESH_CONF_SEC_NONE) {
+- if (ssid->passphrase == NULL) {
++ password = ssid->sae_password;
++ if (!password)
++ password = ssid->passphrase;
++ if (!password) {
+ wpa_printf(MSG_ERROR,
+ "mesh: Passphrase for SAE not configured");
+ return -1;
+@@ -177,9 +181,9 @@ int wpas_mesh_init_rsn(struct wpa_supplicant *wpa_s)
+ return -1;
+ }
+
+- len = os_strlen(ssid->passphrase);
++ len = os_strlen(password);
+ bss->conf->ssid.wpa_passphrase =
+- dup_binstr(ssid->passphrase, len);
++ dup_binstr(password, len);
+
+ wpa_s->mesh_rsn = mesh_rsn_auth_init(wpa_s, mconf);
+ if (!wpa_s->mesh_rsn)
+--
+2.17.0
+