From 561c500795a5bc06c06543ce85477040b708b547 Mon Sep 17 00:00:00 2001 From: Yun-Hao Chung Date: Wed, 11 Aug 2021 15:17:57 +0800 Subject: plugins/admin: add uuid duplicate check SetServiceAllowlist should ignore those duplicated UUIDs. Reviewed-by: Miao-chen Chou --- plugins/admin.c | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) (limited to 'plugins') diff --git a/plugins/admin.c b/plugins/admin.c index 428a5528c..aea33cb71 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; -- cgit v1.2.1