These are needed for P2P2 support.
Signed-off-by: Shivani Baranwal <quic_shivbara@quicinc.com>
fils->erp_resp = erp_resp;
ret = handle_auth_pasn_resp(sta->pasn, hapd->own_addr, sta->addr, NULL,
WLAN_STATUS_SUCCESS);
+ wpabuf_free(pasn->frame);
+ pasn->frame = NULL;
fils->erp_resp = NULL;
if (ret) {
const struct ieee80211_mgmt *mgmt, size_t len,
u16 trans_seq, u16 status)
{
+ int ret;
+
if (hapd->conf->wpa != WPA_PROTO_RSN) {
wpa_printf(MSG_INFO, "PASN: RSN is not configured");
return;
hapd_initialize_pasn(hapd, sta);
hapd_pasn_update_params(hapd, sta, mgmt, len);
- if (handle_auth_pasn_1(sta->pasn, hapd->own_addr,
- sta->addr, mgmt, len, false) < 0)
+ ret = handle_auth_pasn_1(sta->pasn, hapd->own_addr, sta->addr,
+ mgmt, len, false);
+ wpabuf_free(sta->pasn->frame);
+ sta->pasn->frame = NULL;
+ if (ret < 0)
ap_free_sta(hapd, sta);
} else if (trans_seq == 3) {
if (!sta->pasn) {
if (!pasn)
return;
os_free(pasn->rsnxe_ie);
+ wpabuf_free(pasn->frame);
bin_clear_free(pasn, sizeof(struct pasn_data));
}
struct os_reltime last_comeback_key_update;
u16 comeback_idx;
u16 *comeback_pending_idx;
+ struct wpabuf *frame;
/**
* send_mgmt - Function handler to transmit a Management frame
os_free((u8 *) pasn->extra_ies);
pasn->extra_ies = NULL;
}
+
+ wpabuf_free(pasn->frame);
+ pasn->frame = NULL;
}
goto fail;
}
+ wpabuf_free(pasn->frame);
+ pasn->frame = NULL;
+
ret = pasn->send_mgmt(pasn->cb_ctx,
wpabuf_head(frame), wpabuf_len(frame), 0,
pasn->freq, 1000);
- wpabuf_free(frame);
if (ret) {
wpa_printf(MSG_DEBUG, "PASN: Failed sending 1st auth frame");
+ wpabuf_free(frame);
goto fail;
}
+ pasn->frame = frame;
return 0;
fail:
goto fail;
}
+ wpabuf_free(pasn->frame);
+ pasn->frame = NULL;
+
ret = pasn->send_mgmt(pasn->cb_ctx,
wpabuf_head(frame), wpabuf_len(frame), 0,
pasn->freq, 100);
- wpabuf_free(frame);
if (ret) {
wpa_printf(MSG_DEBUG, "PASN: Failed sending 3st auth frame");
+ wpabuf_free(frame);
goto fail;
}
+ pasn->frame = frame;
wpa_printf(MSG_DEBUG, "PASN: Success sending last frame. Store PTK");
pasn->status = WLAN_STATUS_SUCCESS;
wpa_printf(MSG_DEBUG,
"PASN: Building frame 2: success; resp STA=" MACSTR,
MAC2STR(peer_addr));
+ wpabuf_free(pasn->frame);
+ pasn->frame = NULL;
ret = pasn->send_mgmt(pasn->cb_ctx, wpabuf_head_u8(buf),
wpabuf_len(buf), 0, pasn->freq, 0);
wpa_printf(MSG_INFO, "send_auth_reply: Send failed");
wpabuf_free(rsn_buf);
- wpabuf_free(buf);
+ pasn->frame = buf;
return ret;
fail:
wpabuf_free(wrapped_data_buf);
if (!wpa_s->pasn_auth_work)
return -2;
+ wpabuf_free(pasn->frame);
+ pasn->frame = NULL;
+
pasn_register_callbacks(pasn, wpa_s, wpas_pasn_send_mlme, NULL);
ret = wpa_pasn_auth_rx(pasn, (const u8 *) mgmt, len, &pasn_data);
if (ret == 0) {