diff options
author | Yun-Hao Chung <howardchung@chromium.org> | 2021-08-11 15:17:57 +0800 |
---|---|---|
committer | Luiz Augusto von Dentz <luiz.von.dentz@intel.com> | 2021-08-11 11:22:00 -0700 |
commit | 561c500795a5bc06c06543ce85477040b708b547 (patch) | |
tree | 20e244f126d5b61679d80a37966386c360dc0d5c /plugins | |
parent | bb0714be2123f4b1ac98b8a1a97a19d12b3b1b7d (diff) | |
download | bluez-561c500795a5bc06c06543ce85477040b708b547.tar.gz |
plugins/admin: add uuid duplicate check
SetServiceAllowlist should ignore those duplicated UUIDs.
Reviewed-by: Miao-chen Chou <mcchou@chromium.org>
Diffstat (limited to 'plugins')
-rw-r--r-- | plugins/admin.c | 16 |
1 files changed, 15 insertions, 1 deletions
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; |