Re: [PATCH] Bluetooth: Check for matching IRK when looking for paired LE devices

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

On Wed, Mar 11, 2015, Johan Hedberg wrote:
> If we're given an RPA when checking whether we're paired or not, we
> should consult the local RPA storage whether there's a matching IRK.
> This we we ensure that hci_bdaddr_is_paired() gives the right result
> even when trying to pair a second time with the same device with an RPA.
> 
> Signed-off-by: Johan Hedberg <johan.hedberg@xxxxxxxxx>
> ---
>  net/bluetooth/hci_core.c | 7 +++++++
>  1 file changed, 7 insertions(+)
> 
> diff --git a/net/bluetooth/hci_core.c b/net/bluetooth/hci_core.c
> index 4eba9d6fc9a5..84df8f358415 100644
> --- a/net/bluetooth/hci_core.c
> +++ b/net/bluetooth/hci_core.c
> @@ -2519,6 +2519,7 @@ void hci_remove_irk(struct hci_dev *hdev, bdaddr_t *bdaddr, u8 addr_type)
>  bool hci_bdaddr_is_paired(struct hci_dev *hdev, bdaddr_t *bdaddr, u8 type)
>  {
>  	struct smp_ltk *k;
> +	struct smp_irk *irk;
>  	u8 addr_type;
>  
>  	if (type == BDADDR_BREDR) {
> @@ -2533,6 +2534,12 @@ bool hci_bdaddr_is_paired(struct hci_dev *hdev, bdaddr_t *bdaddr, u8 type)
>  	else
>  		addr_type = ADDR_LE_DEV_RANDOM;
>  
> +	irk = hci_get_irk(hdev, bdaddr, addr_type);
> +	if (irk) {
> +		bacpy(bdaddr, &irk->bdaddr);
> +		addr_type = irk->addr_type;
> +	}

Actually please ignore this one. We shouldn't be overwriting the data
that bdaddr points to as that may create unexpected behavior in the
caller.

Johan
--
To unsubscribe from this list: send the line "unsubscribe linux-bluetooth" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Bluez Devel]     [Linux Wireless Networking]     [Linux Wireless Personal Area Networking]     [Linux ATH6KL]     [Linux USB Devel]     [Linux Media Drivers]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Big List of Linux Books]

  Powered by Linux