Bluetooth: Fix setting correct security level when initiating SMP
We can only determine the final security level when both pairing request and response have been exchanged. When initiating pairing the starting target security level is set to MEDIUM unless explicitly specified to be HIGH, so that we can still perform pairing even if the remote doesn't have MITM capabilities. However, once we've received the pairing response we should re-consult the remote and local IO capabilities and upgrade the target security level if necessary. Without this patch the resulting Long Term Key will occasionally be reported to be unauthenticated when it in reality is an authenticated one. Signed-off-by: Johan Hedberg <johan.hedberg@intel.com> Signed-off-by: Marcel Holtmann <marcel@holtmann.org> Cc: stable@vger.kernel.org
This commit is contained in:
Родитель
0097db06f5
Коммит
5eb596f55c
|
@ -494,8 +494,11 @@ static int tk_request(struct l2cap_conn *conn, u8 remote_oob, u8 auth,
|
|||
}
|
||||
|
||||
/* Not Just Works/Confirm results in MITM Authentication */
|
||||
if (method != JUST_CFM)
|
||||
if (method != JUST_CFM) {
|
||||
set_bit(SMP_FLAG_MITM_AUTH, &smp->flags);
|
||||
if (hcon->pending_sec_level < BT_SECURITY_HIGH)
|
||||
hcon->pending_sec_level = BT_SECURITY_HIGH;
|
||||
}
|
||||
|
||||
/* If both devices have Keyoard-Display I/O, the master
|
||||
* Confirms and the slave Enters the passkey.
|
||||
|
|
Загрузка…
Ссылка в новой задаче