Bluetooth: Fix security level for peripheral role
While playing the peripheral role, the host gets a LE Long Term Key Request Event from the controller when a connection is established with a bonded device. The host then informs the LTK which should be used for the connection. Once the link is encrypted, the host gets an Encryption Change Event. Therefore we should set conn->pending_sec_level instead of conn-> sec_level in hci_le_ltk_request_evt. This way, conn->sec_level is properly updated in hci_encrypt_change_evt. Moreover, since we have a LTK associated to the device, we have at least BT_SECURITY_MEDIUM security level. Cc: Stable <stable@vger.kernel.org> Signed-off-by: Andre Guedes <andre.guedes@openbossa.org> Signed-off-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
This commit is contained in:
Родитель
0a3658cccd
Коммит
f8776218e8
|
@ -3557,7 +3557,9 @@ static void hci_le_ltk_request_evt(struct hci_dev *hdev, struct sk_buff *skb)
|
|||
cp.handle = cpu_to_le16(conn->handle);
|
||||
|
||||
if (ltk->authenticated)
|
||||
conn->sec_level = BT_SECURITY_HIGH;
|
||||
conn->pending_sec_level = BT_SECURITY_HIGH;
|
||||
else
|
||||
conn->pending_sec_level = BT_SECURITY_MEDIUM;
|
||||
|
||||
hci_send_cmd(hdev, HCI_OP_LE_LTK_REPLY, sizeof(cp), &cp);
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче