|
@@ -2662,6 +2662,10 @@ struct smp_irk *hci_find_irk_by_addr(struct hci_dev *hdev, bdaddr_t *bdaddr,
|
|
{
|
|
{
|
|
struct smp_irk *irk;
|
|
struct smp_irk *irk;
|
|
|
|
|
|
|
|
+ /* Identity Address must be public or static random */
|
|
|
|
+ if (addr_type == ADDR_LE_DEV_RANDOM && (bdaddr->b[5] & 0xc0) != 0xc0)
|
|
|
|
+ return NULL;
|
|
|
|
+
|
|
list_for_each_entry(irk, &hdev->identity_resolving_keys, list) {
|
|
list_for_each_entry(irk, &hdev->identity_resolving_keys, list) {
|
|
if (addr_type == irk->addr_type &&
|
|
if (addr_type == irk->addr_type &&
|
|
bacmp(bdaddr, &irk->bdaddr) == 0)
|
|
bacmp(bdaddr, &irk->bdaddr) == 0)
|