6e0fa4a76d
Fix encrypted (or DFS) AP+MESH interface combination in a way similar to how it's done for AP+STA and fix netifd shell script. Refresh patches while at it. Signed-off-by: Daniel Golle <daniel@makrotopia.org>
52 lines
1.7 KiB
Diff
52 lines
1.7 KiB
Diff
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(-)
|
|
|
|
--- a/wpa_supplicant/mesh.c
|
|
+++ b/wpa_supplicant/mesh.c
|
|
@@ -154,10 +154,14 @@ int wpas_mesh_init_rsn(struct wpa_suppli
|
|
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_suppli
|
|
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)
|