From 763406b4cc044b7c9daff5792760e0ac9e3b92da Mon Sep 17 00:00:00 2001 From: zhiweijian Date: Tue, 19 Dec 2017 15:00:01 +0800 Subject: [PATCH] Component/bt: fix memory leak in SMP --- components/bt/bluedroid/btc/core/btc_dm.c | 6 ------ components/bt/bluedroid/osi/config.c | 3 +++ components/bt/bluedroid/stack/btm/btm_sec.c | 5 +++-- 3 files changed, 6 insertions(+), 8 deletions(-) diff --git a/components/bt/bluedroid/btc/core/btc_dm.c b/components/bt/bluedroid/btc/core/btc_dm.c index b81d5bc7b6..6ec2b004fb 100644 --- a/components/bt/bluedroid/btc/core/btc_dm.c +++ b/components/bt/bluedroid/btc/core/btc_dm.c @@ -247,12 +247,6 @@ static void btc_dm_ble_auth_cmpl_evt (tBTA_DM_AUTH_CMPL *p_auth_cmpl) if (btc_storage_get_remote_addr_type(&bdaddr, &addr_type) != BT_STATUS_SUCCESS) { btc_storage_set_remote_addr_type(&bdaddr, p_auth_cmpl->addr_type, true); } - /* check the irk has been save in the flash or not, if the irk has already save, means that the peer device has bonding - before. */ - if(pairing_cb.ble.is_pid_key_rcvd) { - btc_storage_compare_address_key_value(&bdaddr, BTM_LE_KEY_PID, - (void *)&pairing_cb.ble.pid_key, sizeof(tBTM_LE_PID_KEYS)); - } btc_dm_save_ble_bonding_keys(); } else { /*Map the HCI fail reason to bt status */ diff --git a/components/bt/bluedroid/osi/config.c b/components/bt/bluedroid/osi/config.c index 590e0392b7..f6f9a6587b 100644 --- a/components/bt/bluedroid/osi/config.c +++ b/components/bt/bluedroid/osi/config.c @@ -436,6 +436,9 @@ static void config_parse(nvs_handle fp, config_t *config) esp_err_t err; size_t length = CONFIG_FILE_MAX_SIZE; err = nvs_get_blob(fp, CONFIG_KEY, buf, &length); + if (err == ESP_ERR_NVS_NOT_FOUND) { + goto error; + } if (err != ESP_OK) { err_code |= 0x02; goto error; diff --git a/components/bt/bluedroid/stack/btm/btm_sec.c b/components/bt/bluedroid/stack/btm/btm_sec.c index 146c10c860..bc591ad724 100644 --- a/components/bt/bluedroid/stack/btm/btm_sec.c +++ b/components/bt/bluedroid/stack/btm/btm_sec.c @@ -2762,8 +2762,9 @@ void btm_sec_check_pending_reqs (void) /* Now, re-submit anything in the mux queue */ bq = btm_cb.sec_pending_q; - - btm_cb.sec_pending_q = fixed_queue_new(SIZE_MAX); + if (!btm_cb.sec_pending_q) { + btm_cb.sec_pending_q = fixed_queue_new(SIZE_MAX); + } while ((p_e = (tBTM_SEC_QUEUE_ENTRY *)fixed_queue_try_dequeue(bq)) != NULL) { /* Check that the ACL is still up before starting security procedures */