]> git.ipfire.org Git - thirdparty/hostap.git/commitdiff
mesh: Properly handle sae_password
authorDaniel Golle <daniel@makrotopia.org>
Thu, 12 Apr 2018 22:42:10 +0000 (00:42 +0200)
committerJouni Malinen <j@w1.fi>
Fri, 13 Apr 2018 09:09:33 +0000 (12:09 +0300)
The recently introduced sae_password parameter was 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

Signed-off-by: Daniel Golle <daniel@makrotopia.org>
wpa_supplicant/mesh.c

index c0c8f9131a4f494b29f4d5b64e7bd3bd617127da..19b66b4b0c46c676e47a7fd34b53635da67bf65b 100644 (file)
@@ -157,6 +157,7 @@ static int wpa_supplicant_mesh_init(struct wpa_supplicant *wpa_s,
        struct mesh_conf *mconf;
        int basic_rates_erp[] = { 10, 20, 55, 60, 110, 120, 240, -1 };
        static int default_groups[] = { 19, 20, 21, 25, 26, -1 };
+       const char *password;
        size_t len;
        int rate_len;
        int frequency;
@@ -291,7 +292,10 @@ static int wpa_supplicant_mesh_init(struct wpa_supplicant *wpa_s,
        }
 
        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");
                        goto out_free;
@@ -311,9 +315,9 @@ static int wpa_supplicant_mesh_init(struct wpa_supplicant *wpa_s,
                                goto out_free;
                }
 
-               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)