From: Luiz Augusto von Dentz Date: Fri, 13 Aug 2021 20:54:10 +0000 (-0700) Subject: bthost: Fix not initializing address types properly X-Git-Tag: submit/tizen/20220313.220938~220 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=614bb9d91fb74a0c0cedf370bad95e5cdfb4916b;p=platform%2Fupstream%2Fbluez.git bthost: Fix not initializing address types properly The address type given to the init_conn is the peer address type (btdev) not the bthost address type, the old code assume it could use since only BDADDR_BREDR or BDADDR_LE_PUBLIC was tested but with the upcoming support for LL Privacy the peer address type would become BDADDR_LE_RANDOM which cannot be used as address type of bthost as that doesn't support random addresses and would likely cause SMP to fail when pairing. Signed-off-by: Anuj Jain Signed-off-by: Ayush Garg --- diff --git a/emulator/bthost.c b/emulator/bthost.c index e5f6a9c..32d8a08 100755 --- a/emulator/bthost.c +++ b/emulator/bthost.c @@ -950,14 +950,20 @@ static void init_conn(struct bthost *bthost, uint16_t handle, if (bthost->conn_init) { ia = bthost->bdaddr; - ia_type = addr_type; - ra = conn->bdaddr; - ra_type = conn->addr_type; + if (addr_type == BDADDR_BREDR) + ia_type = addr_type; + else + ia_type = BDADDR_LE_PUBLIC; + ra = bdaddr; + ra_type = addr_type; } else { - ia = conn->bdaddr; - ia_type = conn->addr_type; + ia = bdaddr; + ia_type = addr_type; ra = bthost->bdaddr; - ra_type = addr_type; + if (addr_type == BDADDR_BREDR) + ra_type = addr_type; + else + ra_type = BDADDR_LE_PUBLIC; } conn->smp_data = smp_conn_add(bthost->smp_data, handle, ia, ia_type,