From 512d973cc27c06e94d81a19216b2bb32e8ac15b1 Mon Sep 17 00:00:00 2001 From: Jouni Malinen Date: Sat, 20 Mar 2021 16:09:19 +0200 Subject: [PATCH] DPP: Indicate authentication success on ConfReqRX if needed (hostapd) It is possible to receive the Configuration Request frame before having seen TX status for the Authentication Confirm. In that sequence, the DPP-AUTH-SUCCESS event would not be indicated before processing the configuration step and that could confuse upper layers that follow the details of the DPP exchange. As a workaround, indicate DPP-AUTH-SUCCESS when receiving the Configuration Request since the Enrollee/Responser has clearly receive the Authentication Confirm even if the TX status for it has not been received. This was already done in wpa_supplicant in commit 422e73d623b4 ("DPP: Indicate authentication success on ConfReqRX if needed") and matching changes are now added to hostapd. Signed-off-by: Jouni Malinen --- src/ap/dpp_hostapd.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/ap/dpp_hostapd.c b/src/ap/dpp_hostapd.c index fcdbb4c98..6e44bdadf 100644 --- a/src/ap/dpp_hostapd.c +++ b/src/ap/dpp_hostapd.c @@ -1982,6 +1982,19 @@ hostapd_dpp_gas_req_handler(struct hostapd_data *hapd, const u8 *sa, wpa_printf(MSG_DEBUG, "DPP: No matching exchange in progress"); return NULL; } + + if (hapd->dpp_auth_ok_on_ack && auth->configurator) { + wpa_printf(MSG_DEBUG, + "DPP: Have not received ACK for Auth Confirm yet - assume it was received based on this GAS request"); + /* hostapd_dpp_auth_success() would normally have been called + * from TX status handler, but since there was no such handler + * call yet, simply send out the event message and proceed with + * exchange. */ + wpa_msg(hapd->msg_ctx, MSG_INFO, + DPP_EVENT_AUTH_SUCCESS "init=1"); + hapd->dpp_auth_ok_on_ack = 0; + } + wpa_hexdump(MSG_DEBUG, "DPP: Received Configuration Request (GAS Query Request)", query, query_len);