diff options
-rw-r--r-- | bta/dm/bta_dm_act.cc | 8 | ||||
-rw-r--r-- | stack/btm/btm_sec.cc | 4 |
2 files changed, 10 insertions, 2 deletions
diff --git a/bta/dm/bta_dm_act.cc b/bta/dm/bta_dm_act.cc index d1b260c19..3900594bf 100644 --- a/bta/dm/bta_dm_act.cc +++ b/bta/dm/bta_dm_act.cc @@ -39,6 +39,7 @@ #include "bta_dm_int.h" #include "bta_sys.h" #include "btif_storage.h" +#include "btif_config.h" #include "btm_api.h" #include "btm_int.h" #include "btu.h" @@ -48,6 +49,7 @@ #include "osi/include/log.h" #include "osi/include/osi.h" #include "sdp_api.h" +#include "stack/btm/btm_ble_int.h" #include "stack/gatt/connection_manager.h" #include "stack/include/gatt_api.h" #include "utl.h" @@ -705,6 +707,12 @@ void bta_dm_remove_device(const RawAddress& bd_addr) { if (!other_address_connected && !other_address.IsEmpty()) { bta_dm_process_remove_device(other_address); } + + /* Check the length of the paired devices, and if 0 then reset IRK */ + if (btif_storage_get_num_bonded_devices() < 1) { + LOG(INFO) << "Last paired device removed, resetting IRK"; + btm_ble_reset_id(); + } } /******************************************************************************* diff --git a/stack/btm/btm_sec.cc b/stack/btm/btm_sec.cc index bdda174ac..eecbed5ea 100644 --- a/stack/btm/btm_sec.cc +++ b/stack/btm/btm_sec.cc @@ -3913,7 +3913,6 @@ static void btm_sec_connect_after_reject_timeout(UNUSED_ATTR void* data) { ******************************************************************************/ void btm_sec_connected(const RawAddress& bda, uint16_t handle, uint8_t status, uint8_t enc_mode) { - tBTM_SEC_DEV_REC* p_dev_rec = btm_find_dev(bda); uint8_t res; bool is_pairing_device = false; bool addr_matched; @@ -3922,6 +3921,7 @@ void btm_sec_connected(const RawAddress& bda, uint16_t handle, uint8_t status, btm_acl_resubmit_page(); + tBTM_SEC_DEV_REC* p_dev_rec = btm_find_dev(bda); if (p_dev_rec) { VLOG(2) << __func__ << ": Security Manager: in state: " << btm_pair_state_descr(btm_cb.pairing_state) @@ -4258,7 +4258,6 @@ tBTM_STATUS btm_sec_disconnect(uint16_t handle, uint8_t reason) { * ******************************************************************************/ void btm_sec_disconnected(uint16_t handle, uint8_t reason) { - tBTM_SEC_DEV_REC* p_dev_rec = btm_find_dev_by_handle(handle); uint8_t old_pairing_flags = btm_cb.pairing_flags; int result = HCI_ERR_AUTH_FAILURE; tBTM_SEC_CALLBACK* p_callback = NULL; @@ -4269,6 +4268,7 @@ void btm_sec_disconnected(uint16_t handle, uint8_t reason) { btm_acl_resubmit_page(); + tBTM_SEC_DEV_REC* p_dev_rec = btm_find_dev_by_handle(handle); if (!p_dev_rec) return; transport = |