Remove unnecessary copying of SSID and BSSID for external_auth
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>
This commit is contained in:
parent
4ffb0fefe4
commit
dd1a8cef4c
5 changed files with 11 additions and 13 deletions
|
@ -708,7 +708,7 @@ static void sae_sme_send_external_auth_status(struct hostapd_data *hapd,
|
|||
|
||||
os_memset(¶ms, 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;
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -965,10 +965,9 @@ static void sme_send_external_auth_status(struct wpa_supplicant *wpa_s,
|
|||
|
||||
os_memset(¶ms, 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, ¶ms);
|
||||
}
|
||||
|
||||
|
@ -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) {
|
||||
|
|
Loading…
Reference in a new issue