JustWorks: Auto-accept only incoming temporary pairing.
Bug: 110433804
Bug: 134461862
Test: Manual; atest net_test_bluetooth
Change-Id: I4e3f39bc08e9d9493734a21ea29d76e43aeb50c8
Merged-In: I4e3f39bc08e9d9493734a21ea29d76e43aeb50c8
(cherry picked from commit 10e15ee4610969b10e7558969fed8ba229d8e5a0)
diff --git a/btif/src/btif_dm.cc b/btif/src/btif_dm.cc
index 6bfbd50..ce2ca9a 100644
--- a/btif/src/btif_dm.cc
+++ b/btif/src/btif_dm.cc
@@ -915,6 +915,7 @@
static void btif_dm_ssp_cfm_req_evt(tBTA_DM_SP_CFM_REQ* p_ssp_cfm_req) {
bt_bdname_t bd_name;
uint32_t cod;
+ bool is_incoming = !(pairing_cb.state == BT_BOND_STATE_BONDING);
int dev_type;
BTIF_TRACE_DEBUG("%s", __func__);
@@ -947,6 +948,19 @@
pairing_cb.is_ssp = true;
+ /* If JustWorks auto-accept */
+ if (p_ssp_cfm_req->just_works) {
+ /* Pairing consent for JustWorks NOT needed if:
+ * 1. Incoming temporary pairing is detected
+ */
+ if (is_incoming && pairing_cb.bond_type == BOND_TYPE_TEMPORARY) {
+ BTIF_TRACE_EVENT(
+ "%s: Auto-accept JustWorks pairing for temporary incoming", __func__);
+ btif_dm_ssp_reply(&bd_addr, BT_SSP_VARIANT_CONSENT, true, 0);
+ return;
+ }
+ }
+
cod = devclass2uint(p_ssp_cfm_req->dev_class);
if (cod == 0) {