]> git.ipfire.org Git - thirdparty/hostap.git/commitdiff
DPP: Provide peer_mac to PKEX Initiator through function argument
authorJouni Malinen <jouni@qca.qualcomm.com>
Thu, 23 Nov 2017 21:32:33 +0000 (23:32 +0200)
committerJouni Malinen <j@w1.fi>
Thu, 23 Nov 2017 21:32:33 +0000 (23:32 +0200)
Avoid unnecessary direct write to a struct dpp_pkex member from outside
dpp.c.

Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
src/ap/dpp_hostapd.c
src/common/dpp.c
src/common/dpp.h
wpa_supplicant/dpp_supplicant.c

index 7beb5ba5a04f94baa83794a5a12be4f26b2e336b..2f8355f6d3f3d3d932c340fb33aae2f53ea21e4f 100644 (file)
@@ -1198,8 +1198,7 @@ hostapd_dpp_rx_pkex_exchange_resp(struct hostapd_data *hapd, const u8 *src,
                return;
        }
 
-       os_memcpy(hapd->dpp_pkex->peer_mac, src, ETH_ALEN);
-       msg = dpp_pkex_rx_exchange_resp(hapd->dpp_pkex, buf, len);
+       msg = dpp_pkex_rx_exchange_resp(hapd->dpp_pkex, src, buf, len);
        if (!msg) {
                wpa_printf(MSG_DEBUG, "DPP: Failed to process the response");
                return;
index 07fa9a3dc559f4b4b3ab1b0e5f01a31e24f7e53d..54a5a6c7d8661613112c34a652c7fcd97e1cbe30 100644 (file)
@@ -6671,6 +6671,7 @@ fail:
 
 
 struct wpabuf * dpp_pkex_rx_exchange_resp(struct dpp_pkex *pkex,
+                                         const u8 *peer_mac,
                                          const u8 *buf, size_t buflen)
 {
        const u8 *attr_status, *attr_id, *attr_key, *attr_group;
@@ -6693,6 +6694,8 @@ struct wpabuf * dpp_pkex_rx_exchange_resp(struct dpp_pkex *pkex,
        if (pkex->failed || pkex->t >= PKEX_COUNTER_T_LIMIT || !pkex->initiator)
                return NULL;
 
+       os_memcpy(pkex->peer_mac, peer_mac, ETH_ALEN);
+
        attr_status = dpp_get_attr(buf, buflen, DPP_ATTR_STATUS,
                                   &attr_status_len);
        if (!attr_status || attr_status_len != 1) {
index 2b73285f1975308ee8d688323624ebb8a436e1b8..0a998c43628b1d003365c2f57cc755820edd3dbe 100644 (file)
@@ -396,6 +396,7 @@ struct dpp_pkex * dpp_pkex_rx_exchange_req(void *msg_ctx,
                                           const char *code,
                                           const u8 *buf, size_t len);
 struct wpabuf * dpp_pkex_rx_exchange_resp(struct dpp_pkex *pkex,
+                                         const u8 *peer_mac,
                                          const u8 *buf, size_t len);
 struct wpabuf * dpp_pkex_rx_commit_reveal_req(struct dpp_pkex *pkex,
                                              const u8 *hdr,
index 07f2e943ee84579580e71e74e0dd334d7efdca76..f5442944643a2c6420c183f41307d7c12faa3c8d 100644 (file)
@@ -1796,8 +1796,7 @@ wpas_dpp_rx_pkex_exchange_resp(struct wpa_supplicant *wpa_s, const u8 *src,
        eloop_cancel_timeout(wpas_dpp_pkex_retry_timeout, wpa_s, NULL);
        wpa_s->dpp_pkex->exch_req_wait_time = 0;
 
-       os_memcpy(wpa_s->dpp_pkex->peer_mac, src, ETH_ALEN);
-       msg = dpp_pkex_rx_exchange_resp(wpa_s->dpp_pkex, buf, len);
+       msg = dpp_pkex_rx_exchange_resp(wpa_s->dpp_pkex, src, buf, len);
        if (!msg) {
                wpa_printf(MSG_DEBUG, "DPP: Failed to process the response");
                return;