mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-27 21:03:32 +00:00
Bluetooth: SMP: Fail if remote and local public keys are identical
commit 6d19628f53
upstream.
This fails the pairing procedure when both remote and local non-debug
public keys are identical.
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
1dfd47b684
commit
30126d4ba7
1 changed files with 9 additions and 0 deletions
|
@ -2703,6 +2703,15 @@ static int smp_cmd_public_key(struct l2cap_conn *conn, struct sk_buff *skb)
|
|||
if (skb->len < sizeof(*key))
|
||||
return SMP_INVALID_PARAMS;
|
||||
|
||||
/* Check if remote and local public keys are the same and debug key is
|
||||
* not in use.
|
||||
*/
|
||||
if (!test_bit(SMP_FLAG_DEBUG_KEY, &smp->flags) &&
|
||||
!crypto_memneq(key, smp->local_pk, 64)) {
|
||||
bt_dev_err(hdev, "Remote and local public keys are identical");
|
||||
return SMP_UNSPECIFIED;
|
||||
}
|
||||
|
||||
memcpy(smp->remote_pk, key, 64);
|
||||
|
||||
if (test_bit(SMP_FLAG_REMOTE_OOB, &smp->flags)) {
|
||||
|
|
Loading…
Reference in a new issue