From 30c1693f42326d4f927e76120492bc9593b8f739 Mon Sep 17 00:00:00 2001 From: Daniel Golle 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 --- 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