diff options
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.patch | 57 |
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 + |