From: Jouni Malinen Date: Sat, 9 May 2020 13:40:44 +0000 (+0300) Subject: DPP2: Move connStatus object building into a helper function X-Git-Tag: hostap_2_10~1354 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=961435097bd46a7cf144826e2d117daa4f15d465;p=thirdparty%2Fhostap.git DPP2: Move connStatus object building into a helper function Allow the same helper function to be used for reconfiguration. Signed-off-by: Jouni Malinen --- diff --git a/src/common/dpp.c b/src/common/dpp.c index d2bf5cf92..4b34b4f05 100644 --- a/src/common/dpp.c +++ b/src/common/dpp.c @@ -6165,16 +6165,11 @@ fail: } -struct wpabuf * dpp_build_conn_status_result(struct dpp_authentication *auth, - enum dpp_status_error result, - const u8 *ssid, size_t ssid_len, - const char *channel_list) +struct wpabuf * dpp_build_conn_status(enum dpp_status_error result, + const u8 *ssid, size_t ssid_len, + const char *channel_list) { - struct wpabuf *msg = NULL, *clear = NULL, *json; - size_t nonce_len, clear_len, attr_len; - const u8 *addr[2]; - size_t len[2]; - u8 *wrapped; + struct wpabuf *json; json = wpabuf_alloc(1000); if (!json) @@ -6183,8 +6178,10 @@ struct wpabuf * dpp_build_conn_status_result(struct dpp_authentication *auth, json_add_int(json, "result", result); if (ssid) { json_value_sep(json); - if (json_add_base64url(json, "ssid64", ssid, ssid_len) < 0) - goto fail; + if (json_add_base64url(json, "ssid64", ssid, ssid_len) < 0) { + wpabuf_free(json); + return NULL; + } } if (channel_list) { json_value_sep(json); @@ -6194,6 +6191,25 @@ struct wpabuf * dpp_build_conn_status_result(struct dpp_authentication *auth, wpa_hexdump_ascii(MSG_DEBUG, "DPP: connStatus JSON", wpabuf_head(json), wpabuf_len(json)); + return json; +} + + +struct wpabuf * dpp_build_conn_status_result(struct dpp_authentication *auth, + enum dpp_status_error result, + const u8 *ssid, size_t ssid_len, + const char *channel_list) +{ + struct wpabuf *msg = NULL, *clear = NULL, *json; + size_t nonce_len, clear_len, attr_len; + const u8 *addr[2]; + size_t len[2]; + u8 *wrapped; + + json = dpp_build_conn_status(result, ssid, ssid_len, channel_list); + if (!json) + return NULL; + nonce_len = auth->curve->nonce_len; clear_len = 5 + 4 + nonce_len + 4 + wpabuf_len(json); attr_len = 4 + clear_len + AES_BLOCK_SIZE; diff --git a/src/common/dpp_i.h b/src/common/dpp_i.h index 5a8fa9454..402b7cbfe 100644 --- a/src/common/dpp_i.h +++ b/src/common/dpp_i.h @@ -30,6 +30,9 @@ struct dpp_global { void dpp_build_attr_status(struct wpabuf *msg, enum dpp_status_error status); unsigned int dpp_next_id(struct dpp_global *dpp); +struct wpabuf * dpp_build_conn_status(enum dpp_status_error result, + const u8 *ssid, size_t ssid_len, + const char *channel_list); struct json_token * dpp_parse_own_connector(const char *own_connector); /* dpp_crypto.c */