Bluetooth: Fix using invalid responder address as peripheral
If Static Random address is used as Identity Address and local privacy is not used, responder address for slave connection was not set to Identity Address. Change-Id: I7a057c0fcb8e6d7e043952a092d16e959841f792 Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
This commit is contained in:
parent
e0922851a1
commit
7c87c089fd
2 changed files with 9 additions and 8 deletions
|
@ -673,9 +673,9 @@ static void le_conn_complete(struct net_buf *buf)
|
|||
*/
|
||||
} else {
|
||||
bt_addr_le_copy(&conn->le.init_addr, &evt->peer_addr);
|
||||
if (bt_dev.adv_addr_type == BT_ADDR_LE_PUBLIC) {
|
||||
bt_addr_le_copy(&conn->le.resp_addr,
|
||||
&bt_dev.id_addr);
|
||||
|
||||
if (atomic_test_bit(bt_dev.flags, BT_DEV_ADVERTISING_ID)) {
|
||||
bt_addr_le_copy(&conn->le.resp_addr, &bt_dev.id_addr);
|
||||
} else {
|
||||
bt_addr_le_copy(&conn->le.resp_addr,
|
||||
&bt_dev.random_addr);
|
||||
|
@ -3440,13 +3440,15 @@ int bt_le_adv_start(const struct bt_le_adv_param *param,
|
|||
return err;
|
||||
}
|
||||
|
||||
bt_dev.adv_addr_type = set_param->own_addr_type;
|
||||
|
||||
err = set_advertise_enable();
|
||||
if (err) {
|
||||
return err;
|
||||
}
|
||||
|
||||
if (param->addr_type == BT_LE_ADV_ADDR_IDENTITY) {
|
||||
atomic_set_bit(bt_dev.flags, BT_DEV_ADVERTISING_ID);
|
||||
}
|
||||
|
||||
atomic_set_bit(bt_dev.flags, BT_DEV_KEEP_ADVERTISING);
|
||||
|
||||
return 0;
|
||||
|
@ -3465,6 +3467,7 @@ int bt_le_adv_stop(void)
|
|||
return err;
|
||||
}
|
||||
|
||||
atomic_clear_bit(bt_dev.flags, BT_DEV_ADVERTISING_ID);
|
||||
atomic_clear_bit(bt_dev.flags, BT_DEV_KEEP_ADVERTISING);
|
||||
|
||||
return 0;
|
||||
|
|
|
@ -30,6 +30,7 @@ enum {
|
|||
|
||||
BT_DEV_ADVERTISING,
|
||||
BT_DEV_KEEP_ADVERTISING,
|
||||
BT_DEV_ADVERTISING_ID,
|
||||
BT_DEV_SCANNING,
|
||||
BT_DEV_EXPLICIT_SCAN,
|
||||
|
||||
|
@ -65,9 +66,6 @@ struct bt_dev {
|
|||
/* Current local Random Address */
|
||||
bt_addr_le_t random_addr;
|
||||
|
||||
/* Current advertising address type */
|
||||
uint8_t adv_addr_type;
|
||||
|
||||
/* Controller version & manufacturer information */
|
||||
uint8_t hci_version;
|
||||
uint16_t hci_revision;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue