Bluetooth: Don't try to look up private addresses as Identity Address
Identity Addresses are either public or static random. When looking up addresses based on the Identity Address it doesn't make sense to go through the IRK list if we're given a private random address. This patch fixes (or rather improves) the hci_find_irk_by_addr function to bail out early if given a private random address. Signed-off-by: Johan Hedberg <johan.hedberg@intel.com> Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
This commit is contained in:
Родитель
f4a407bef2
Коммит
6cfc9988bd
|
@ -2662,6 +2662,10 @@ struct smp_irk *hci_find_irk_by_addr(struct hci_dev *hdev, bdaddr_t *bdaddr,
|
|||
{
|
||||
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) {
|
||||
if (addr_type == irk->addr_type &&
|
||||
bacmp(bdaddr, &irk->bdaddr) == 0)
|
||||
|
|
Загрузка…
Ссылка в новой задаче