From a65f859b17745fcaee79d55333808d9d589b0187 Mon Sep 17 00:00:00 2001 From: Ugo Yu Date: Thu, 11 Jul 2019 20:12:42 +0800 Subject: [PATCH] DO NOT MERGE Store BLE keys using the address from the ble_auth_cmpl_evt Reading the peer address from btif_dm_ble_auth_cmpl_evt, instead of using the value from the pairing control block in btif_dm_save_ble_bonding_keys, ensures that BLE keys are stored with the correct address. Bug: 133234174 Bug: 79703832 Test: 1. Initiate crosskey pairing from BLE 2. Check whether BLE keys are stored correctly Change-Id: I18b4a1d8e2cdcd6dd4a300f1dc9e6d3892a3baff (cherry picked from commit 0d95651e8b22b1012f1ee103e4a0b8665a0c17d4) --- btif/include/btif_dm.h | 2 +- btif/src/btif_dm.cc | 6 ++---- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/btif/include/btif_dm.h b/btif/include/btif_dm.h index adafdef44..39a1cfc6f 100644 --- a/btif/include/btif_dm.h +++ b/btif/include/btif_dm.h @@ -100,7 +100,7 @@ void btif_dm_load_ble_local_keys(void); void btif_dm_get_ble_local_keys(tBTA_DM_BLE_LOCAL_KEY_MASK* p_key_mask, BT_OCTET16 er, tBTA_BLE_LOCAL_ID_KEYS* p_id_keys); -void btif_dm_save_ble_bonding_keys(void); +void btif_dm_save_ble_bonding_keys(RawAddress& bd_addr); void btif_dm_remove_ble_bonding_keys(void); void btif_dm_ble_sec_req_evt(tBTA_DM_BLE_SEC_REQ* p_ble_req); diff --git a/btif/src/btif_dm.cc b/btif/src/btif_dm.cc index c6de6cd6e..6bfbd50a7 100644 --- a/btif/src/btif_dm.cc +++ b/btif/src/btif_dm.cc @@ -2846,7 +2846,7 @@ static void btif_dm_ble_auth_cmpl_evt(tBTA_DM_AUTH_CMPL* p_auth_cmpl) { btif_storage_remove_bonded_device(&bdaddr); state = BT_BOND_STATE_NONE; } else { - btif_dm_save_ble_bonding_keys(); + btif_dm_save_ble_bonding_keys(bdaddr); BTA_GATTC_Refresh(bd_addr); btif_dm_get_remote_services_by_transport(&bd_addr, BTA_GATT_TRANSPORT_LE); } @@ -2919,11 +2919,9 @@ void btif_dm_get_ble_local_keys(tBTA_DM_BLE_LOCAL_KEY_MASK* p_key_mask, BTIF_TRACE_DEBUG("%s *p_key_mask=0x%02x", __func__, *p_key_mask); } -void btif_dm_save_ble_bonding_keys(void) { +void btif_dm_save_ble_bonding_keys(RawAddress& bd_addr) { BTIF_TRACE_DEBUG("%s", __func__); - RawAddress bd_addr = pairing_cb.bd_addr; - if (pairing_cb.ble.is_penc_key_rcvd) { btif_storage_add_ble_bonding_key(&bd_addr, (char*)&pairing_cb.ble.penc_key, BTIF_DM_LE_KEY_PENC, -- 2.11.0