2023-03-24 23:40:59

by Luiz Augusto von Dentz

[permalink] [raw]
Subject: [PATCH BlueZ 3/4] monitor/att: Fix not loading gatt_db for devices using RPA

From: Luiz Augusto von Dentz <[email protected]>

Device using RPA have its storage using its identity address so this
uses keys_resolve_identity to attempt to resolve the destination
address instead of always using the connection address.
---
monitor/att.c | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/monitor/att.c b/monitor/att.c
index 42d1afe701a1..cf440c6844c0 100644
--- a/monitor/att.c
+++ b/monitor/att.c
@@ -42,6 +42,7 @@
#include "display.h"
#include "l2cap.h"
#include "att.h"
+#include "keys.h"

struct att_read {
struct gatt_db_attribute *attr;
@@ -2885,9 +2886,14 @@ static void load_gatt_db(struct packet_conn_data *conn)
char filename[PATH_MAX];
char local[18];
char peer[18];
+ uint8_t id[6], id_type;

ba2str((bdaddr_t *)conn->src, local);
- ba2str((bdaddr_t *)conn->dst, peer);
+
+ if (keys_resolve_identity(conn->dst, id, &id_type))
+ ba2str((bdaddr_t *)id, peer);
+ else
+ ba2str((bdaddr_t *)conn->dst, peer);

create_filename(filename, PATH_MAX, "/%s/attributes", local);
gatt_load_db(data->ldb, filename, &data->ldb_mtim);
--
2.39.2