]> git.ipfire.org Git - thirdparty/hostap.git/commitdiff
Remove unnecessary copying of SSID and BSSID for external_auth
authorJouni Malinen <jouni@codeaurora.org>
Fri, 12 Apr 2019 17:38:08 +0000 (20:38 +0300)
committerJouni Malinen <j@w1.fi>
Fri, 12 Apr 2019 17:43:26 +0000 (20:43 +0300)
The external authentication command and event does not need to copy the
BSSID/SSID values into struct external_auth since those values are used
before returning from the call. Simplify this by using const u8 * to
external data instead of the array with a copy of the external data.

Signed-off-by: Jouni Malinen <jouni@codeaurora.org>
src/ap/ieee802_11.c
src/drivers/driver.h
src/drivers/driver_nl80211.c
src/drivers/driver_nl80211_event.c
wpa_supplicant/sme.c

index a8f3fc1d863f840c1f25a1fb9e54dd55845aa706..a8a83795efd77b367e14d074c5e7be80563b0b28 100644 (file)
@@ -708,7 +708,7 @@ static void sae_sme_send_external_auth_status(struct hostapd_data *hapd,
 
        os_memset(&params, 0, sizeof(params));
        params.status = status;
-       os_memcpy(params.bssid, sta->addr, ETH_ALEN);
+       params.bssid = sta->addr;
        if (status == WLAN_STATUS_SUCCESS && sta->sae)
                params.pmkid = sta->sae->pmkid;
 
index 073c50e54516217ead8737dcaa60674b10decebe..e7c8f318f35d765e2c1ed43dc5ac3b561f42a745 100644 (file)
@@ -2163,8 +2163,8 @@ struct external_auth {
                EXT_AUTH_START,
                EXT_AUTH_ABORT,
        } action;
-       u8 bssid[ETH_ALEN];
-       u8 ssid[SSID_MAX_LEN];
+       const u8 *bssid;
+       const u8 *ssid;
        size_t ssid_len;
        unsigned int key_mgmt_suite;
        u16 status;
index b934c8422a8e674e247ca850579ddaa653f20f0e..60934fbbcd0369f2e1cd8764347cef9acf8b47ae 100644 (file)
@@ -10820,11 +10820,12 @@ static int nl80211_send_external_auth_status(void *priv,
        msg = nl80211_drv_msg(drv, 0, NL80211_CMD_EXTERNAL_AUTH);
        if (!msg ||
            nla_put_u16(msg, NL80211_ATTR_STATUS_CODE, params->status) ||
-           (params->ssid_len &&
+           (params->ssid && params->ssid_len &&
             nla_put(msg, NL80211_ATTR_SSID, params->ssid_len, params->ssid)) ||
            (params->pmkid &&
             nla_put(msg, NL80211_ATTR_PMKID, PMKID_LEN, params->pmkid)) ||
-           nla_put(msg, NL80211_ATTR_BSSID, ETH_ALEN, params->bssid))
+           (params->bssid &&
+            nla_put(msg, NL80211_ATTR_BSSID, ETH_ALEN, params->bssid)))
                goto fail;
        ret = send_and_recv_msgs(drv, msg, NULL, NULL);
        msg = NULL;
index ffddd94d204ca35646df1c5c26266ac5256b9b4d..4db79e7117797964ab28214d4fa73d12a585cf00 100644 (file)
@@ -2269,11 +2269,9 @@ static void nl80211_external_auth(struct wpa_driver_nl80211_data *drv,
        event.external_auth.ssid_len = nla_len(tb[NL80211_ATTR_SSID]);
        if (event.external_auth.ssid_len > SSID_MAX_LEN)
                return;
-       os_memcpy(event.external_auth.ssid, nla_data(tb[NL80211_ATTR_SSID]),
-                 event.external_auth.ssid_len);
+       event.external_auth.ssid = nla_data(tb[NL80211_ATTR_SSID]);
 
-       os_memcpy(event.external_auth.bssid, nla_data(tb[NL80211_ATTR_BSSID]),
-                 ETH_ALEN);
+       event.external_auth.bssid = nla_data(tb[NL80211_ATTR_BSSID]);
 
        wpa_printf(MSG_DEBUG,
                   "nl80211: External auth action: %u, AKM: 0x%x",
index 4bb5f3aef86915b92f9c5a0e4820fab50585678f..c33d1da735f4709f25ea28047daf2d69aceea8bf 100644 (file)
@@ -965,10 +965,9 @@ static void sme_send_external_auth_status(struct wpa_supplicant *wpa_s,
 
        os_memset(&params, 0, sizeof(params));
        params.status = status;
-       os_memcpy(params.ssid, wpa_s->sme.ext_auth.ssid,
-                 wpa_s->sme.ext_auth.ssid_len);
+       params.ssid = wpa_s->sme.ext_auth.ssid;
        params.ssid_len = wpa_s->sme.ext_auth.ssid_len;
-       os_memcpy(params.bssid, wpa_s->sme.ext_auth.bssid, ETH_ALEN);
+       params.bssid = wpa_s->sme.ext_auth.bssid;
        wpa_drv_send_external_auth_status(wpa_s, &params);
 }
 
@@ -978,7 +977,7 @@ static void sme_handle_external_auth_start(struct wpa_supplicant *wpa_s,
 {
        struct wpa_ssid *ssid;
        size_t ssid_str_len = data->external_auth.ssid_len;
-       u8 *ssid_str = data->external_auth.ssid;
+       const u8 *ssid_str = data->external_auth.ssid;
 
        /* Get the SSID conf from the ssid string obtained */
        for (ssid = wpa_s->conf->ssid; ssid; ssid = ssid->next) {