From 0e5bb13f664a5dc38e3c303e5103bb96b7908c4d Mon Sep 17 00:00:00 2001 From: Martin Brabham Date: Fri, 29 Oct 2021 21:27:27 +0000 Subject: [PATCH] Reset the IRK after all devices are unpaired Bug: 204355134 Bug: 195410559 Test: Check IRK, pair devices, unpair all devices, Check IRK Tag: #security Change-Id: I8e44f010a72dcdec595d81293a05f49ccc054065 Merged-In: I8e44f010a72dcdec595d81293a05f49ccc054065 --- bta/dm/bta_dm_act.cc | 8 ++++++++ 1 file changed, 8 insertions(+) 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(); + } } /******************************************************************************* -- 2.11.0