From cdbdb31d6d4b63f1d860535c42f1c5cb1b58d024 Mon Sep 17 00:00:00 2001 From: xiongweichao Date: Sat, 7 May 2022 20:07:23 +0800 Subject: [PATCH] Fixed memory leak when SPP initialization failed --- .../bt/host/bluedroid/btc/profile/std/spp/btc_spp.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/components/bt/host/bluedroid/btc/profile/std/spp/btc_spp.c b/components/bt/host/bluedroid/btc/profile/std/spp/btc_spp.c index 548278ff9f..05b20d73d1 100644 --- a/components/bt/host/bluedroid/btc/profile/std/spp/btc_spp.c +++ b/components/bt/host/bluedroid/btc/profile/std/spp/btc_spp.c @@ -517,12 +517,20 @@ static void btc_spp_init(btc_spp_args_t *arg) if (osi_mutex_new(&spp_local_param.spp_slot_mutex) != 0) { BTC_TRACE_ERROR("%s osi_mutex_new failed\n", __func__); +#if SPP_DYNAMIC_MEMORY == TRUE + osi_free(spp_local_param_ptr); + spp_local_param_ptr = NULL; +#endif ret = ESP_SPP_NO_RESOURCE; break; } if ((spp_local_param.tx_event_group = xEventGroupCreate()) == NULL) { BTC_TRACE_ERROR("%s create tx_event_group failed\n", __func__); osi_mutex_free(&spp_local_param.spp_slot_mutex); +#if SPP_DYNAMIC_MEMORY == TRUE + osi_free(spp_local_param_ptr); + spp_local_param_ptr = NULL; +#endif ret = ESP_SPP_NO_RESOURCE; break; }