[Bluez PATCH v1] plugins/admin: add uuid duplicate check
From: Howard Chung <hidden>
Date: 2021-08-11 07:18:43
From: Yun-Hao Chung <redacted> SetServiceAllowlist should ignore those duplicated UUIDs. Reviewed-by: Miao-chen Chou <redacted> --- Test steps: 1. set service allow list to ["1800", "1800", "180A"] via D-Bus 2. check service allow list is ["1800", "180A"] plugins/admin.c | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-)
diff --git a/plugins/admin.c b/plugins/admin.c
index 428a5528cc88..aea33cb71ac2 100644
--- a/plugins/admin.c
+++ b/plugins/admin.c@@ -85,6 +85,14 @@ static void admin_policy_free(void *data) g_free(admin_policy); } +static bool uuid_match(const void *data, const void *match_data) +{ + const bt_uuid_t *uuid = data; + const bt_uuid_t *match_uuid = match_data; + + return bt_uuid_cmp(uuid, match_uuid) == 0; +} + static struct queue *parse_allow_service_list(struct btd_adapter *adapter, DBusMessage *msg) {
@@ -119,9 +127,15 @@ static struct queue *parse_allow_service_list(struct btd_adapter *adapter, goto failed; } + dbus_message_iter_next(&arr_iter); + + if (queue_find(uuid_list, uuid_match, uuid)) { + g_free(uuid); + continue; + } + queue_push_head(uuid_list, uuid); - dbus_message_iter_next(&arr_iter); } while (true); return uuid_list;
--
2.32.0.605.g8dce9f2422-goog