From 3f205d4d85e6a8bfdc3c6ad9d55a521ffa7c1bdd Mon Sep 17 00:00:00 2001 From: gongyantao Date: Fri, 26 Jan 2024 16:53:15 +0800 Subject: [PATCH] fix(bt/bluedroid): fix dangling pointer issue when logging remove section --- components/bt/host/bluedroid/btc/core/btc_storage.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/components/bt/host/bluedroid/btc/core/btc_storage.c b/components/bt/host/bluedroid/btc/core/btc_storage.c index 1e7a60b63b06..1923dea0da63 100644 --- a/components/bt/host/bluedroid/btc/core/btc_storage.c +++ b/components/bt/host/bluedroid/btc/core/btc_storage.c @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: 2015-2023 Espressif Systems (Shanghai) CO LTD + * SPDX-FileCopyrightText: 2015-2024 Espressif Systems (Shanghai) CO LTD * * SPDX-License-Identifier: Apache-2.0 */ @@ -57,7 +57,8 @@ bt_status_t btc_storage_add_bonded_device(bt_bdaddr_t *remote_bd_addr, // delete config info if (btc_config_remove_section(remove_section)) { - BTC_TRACE_WARNING("exceeded the maximum nubmer of bonded devices, delete the first device info : %s\n", remove_section); + BTC_TRACE_WARNING("exceeded the maximum nubmer of bonded devices, delete the first device info : %02x:%02x:%02x:%02x:%02x:%02x", + bd_addr.address[0], bd_addr.address[1], bd_addr.address[2], bd_addr.address[3], bd_addr.address[4], bd_addr.address[5]); } } @@ -131,6 +132,7 @@ static bt_status_t btc_in_fetch_bonded_devices(int add) bt_status_t status = BT_STATUS_FAIL; uint16_t dev_cnt = 0; const btc_config_section_iter_t *remove_iter = NULL; + bt_bdaddr_t bd_addr; btc_config_lock(); for (const btc_config_section_iter_t *iter = btc_config_section_begin(); iter != btc_config_section_end(); iter = btc_config_section_next(iter)) { @@ -157,6 +159,7 @@ static bt_status_t btc_in_fetch_bonded_devices(int add) remove_iter = iter; while (remove_iter != btc_config_section_end()) { const char *remove_section = btc_config_section_name(remove_iter); + string_to_bdaddr(remove_section, &bd_addr); if (!string_is_bdaddr(remove_section)) { remove_iter = btc_config_section_next(remove_iter); continue; @@ -164,7 +167,8 @@ static bt_status_t btc_in_fetch_bonded_devices(int add) remove_iter = btc_config_section_next(remove_iter); /* delete config info */ if (btc_config_remove_section(remove_section)) { - BTC_TRACE_WARNING("exceeded the maximum number of bonded devices, delete the exceed device info : %s", remove_section); + BTC_TRACE_WARNING("exceeded the maximum number of bonded devices, delete the exceed device info : %02x:%02x:%02x:%02x:%02x:%02x", + bd_addr.address[0], bd_addr.address[1], bd_addr.address[2], bd_addr.address[3], bd_addr.address[4], bd_addr.address[5]); } } /* write into nvs */