From bf54b1a400d7aa826047019c0cb28792fcfe15b0 Mon Sep 17 00:00:00 2001 From: Yu Liu Date: Thu, 24 Sep 2020 16:17:42 -0700 Subject: [PATCH] device: Disable auto connect for temporary devices When connecting a LE keyboard, if the user input the wrong passkey, the stack would keep auto connect and thus allow the user to retry the passkey indefinitely which is a security concern. This fix would disallow the auto connect if the authentication failed. Signed-off-by: Anuj Jain Signed-off-by: Ayush Garg --- src/device.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/device.c b/src/device.c index 0c85002..7b78fde 100644 --- a/src/device.c +++ b/src/device.c @@ -8839,6 +8839,10 @@ void btd_device_set_temporary(struct btd_device *device, bool temporary) if (device->bredr) adapter_whitelist_remove(device->adapter, device); adapter_connect_list_remove(device->adapter, device); + if (device->auto_connect) { + device->disable_auto_connect = TRUE; + device_set_auto_connect(device, FALSE); + } device->temporary_timer = g_timeout_add_seconds(main_opts.tmpto, device_disappeared, device); @@ -9290,8 +9294,9 @@ void device_bonding_complete(struct btd_device *device, uint8_t bdaddr_type, * treated as a newly discovered device. */ if (!device_is_paired(device, bdaddr_type) && - !device_is_trusted(device)) + !device_is_trusted(device)) { btd_device_set_temporary(device, true); + } device_bonding_failed(device, status); #ifdef TIZEN_FEATURE_BLUEZ_MODIFY -- 2.7.4