From 08ac3ca677be417e0087159629d0359c4a9a1585 Mon Sep 17 00:00:00 2001 From: Rahul Tank Date: Thu, 14 Dec 2023 12:56:19 +0530 Subject: [PATCH] Added fix to handle all 0s address of external controllers during IRK generation --- nimble/host/src/ble_hs_pvcy.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/nimble/host/src/ble_hs_pvcy.c b/nimble/host/src/ble_hs_pvcy.c index cef563a9c..7f27be964 100644 --- a/nimble/host/src/ble_hs_pvcy.c +++ b/nimble/host/src/ble_hs_pvcy.c @@ -214,7 +214,11 @@ void ble_hs_pvcy_set_default_irk(void) ble_hs_id_addr(BLE_ADDR_PUBLIC, (const uint8_t **) &local_id, NULL); /* Create key / value */ - memcpy (key_local_irk.addr.val , local_id, BLE_DEV_ADDR_LEN); + /* Some controllers give all 0s as address. Handle such case */ + if (local_id) { + memcpy (key_local_irk.addr.val , local_id, BLE_DEV_ADDR_LEN); + } + key_local_irk.addr.type = BLE_ADDR_PUBLIC; /* Read NVS for local IRK */ @@ -236,7 +240,9 @@ void ble_hs_pvcy_set_default_irk(void) memcpy(&value_local_irk.irk, ble_hs_pvcy_default_irk, 16); - memcpy(value_local_irk.addr.val, local_id, BLE_DEV_ADDR_LEN); + if (local_id) { + memcpy(value_local_irk.addr.val, local_id, BLE_DEV_ADDR_LEN); + } value_local_irk.addr.type = BLE_ADDR_PUBLIC;