From: Jouni Malinen Date: Wed, 5 Feb 2020 23:18:58 +0000 (+0200) Subject: DPP: Initialize conf_resp_status to non-OK X-Git-Tag: hostap_2_10~1873 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=1ba4a10a078b11745c54f6009c0c6c081a3668ca;p=thirdparty%2Fhostap.git DPP: Initialize conf_resp_status to non-OK This avoids unexpected behavior if GAS query fails and the Config Response does not get processed at all. Previously, this could result in configuration being assumed to be successful instead of failure when Config Response object was not received at all. That could result in undesired Config Result frame transmission with DPP Rel 2 and not clearing the ongoing DPP session. Signed-off-by: Jouni Malinen --- diff --git a/src/common/dpp.c b/src/common/dpp.c index 55e7bde4a..12a5a983b 100644 --- a/src/common/dpp.c +++ b/src/common/dpp.c @@ -2335,6 +2335,19 @@ fail: } +static struct dpp_authentication * dpp_alloc_auth(void *msg_ctx) +{ + struct dpp_authentication *auth; + + auth = os_zalloc(sizeof(*auth)); + if (!auth) + return NULL; + auth->msg_ctx = msg_ctx; + auth->conf_resp_status = 255; + return auth; +} + + struct dpp_authentication * dpp_auth_init(void *msg_ctx, struct dpp_bootstrap_info *peer_bi, struct dpp_bootstrap_info *own_bi, @@ -2352,10 +2365,9 @@ struct dpp_authentication * dpp_auth_init(void *msg_ctx, u8 test_hash[SHA256_MAC_LEN]; #endif /* CONFIG_TESTING_OPTIONS */ - auth = os_zalloc(sizeof(*auth)); + auth = dpp_alloc_auth(msg_ctx); if (!auth) return NULL; - auth->msg_ctx = msg_ctx; auth->initiator = 1; auth->waiting_auth_resp = 1; auth->allowed_roles = dpp_allowed_roles; @@ -3289,10 +3301,9 @@ dpp_auth_req_rx(void *msg_ctx, u8 dpp_allowed_roles, int qr_mutual, wrapped_data, wrapped_data_len); attr_len = wrapped_data - 4 - attr_start; - auth = os_zalloc(sizeof(*auth)); + auth = dpp_alloc_auth(msg_ctx); if (!auth) goto fail; - auth->msg_ctx = msg_ctx; auth->peer_bi = peer_bi; auth->own_bi = own_bi; auth->curve = own_bi->curve;