From 7e8251d16bb22fbd8f1dddf76a7ef36daf17b97c Mon Sep 17 00:00:00 2001 From: Mahavir Jain Date: Mon, 3 Mar 2025 10:44:56 +0530 Subject: [PATCH] fix(protocomm): memory leak issue for session command0 failure case --- components/protocomm/src/security/security2.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/components/protocomm/src/security/security2.c b/components/protocomm/src/security/security2.c index 73d104d47c..113fe361cc 100644 --- a/components/protocomm/src/security/security2.c +++ b/components/protocomm/src/security/security2.c @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: 2018-2022 Espressif Systems (Shanghai) CO LTD + * SPDX-FileCopyrightText: 2018-2025 Espressif Systems (Shanghai) CO LTD * * SPDX-License-Identifier: Apache-2.0 */ @@ -172,19 +172,21 @@ static esp_err_t handle_session_command0(session_t *cur_session, out->payload_case = SEC2_PAYLOAD__PAYLOAD_SR0; out->sr0 = out_resp; - resp->sec_ver = SEC_SCHEME_VERSION__SecScheme2; - resp->proto_case = SESSION_DATA__PROTO_SEC2; - resp->sec2 = out; - cur_session->username_len = in->sc0->client_username.len; cur_session->username = malloc(cur_session->username_len); if (!cur_session->username) { ESP_LOGE(TAG, "Failed to allocate memory!"); esp_srp_free(cur_session->srp_hd); + free(out); + free(out_resp); return ESP_ERR_NO_MEM; } memcpy(cur_session->username, in->sc0->client_username.data, in->sc0->client_username.len); + resp->sec_ver = SEC_SCHEME_VERSION__SecScheme2; + resp->proto_case = SESSION_DATA__PROTO_SEC2; + resp->sec2 = out; + cur_session->state = SESSION_STATE_CMD1; ESP_LOGD(TAG, "Session setup phase1 done");