From 9e9b9d7e0cf95c291dd171d34a5e281918b7cef5 Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Sat, 22 Dec 2012 22:43:38 -0800 Subject: [PATCH] core: Do not include SDP server UUIDs in adapter list Any service that is not part of the public browse group should not be exported within the adapter's UUID list. --- src/adapter.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/adapter.c b/src/adapter.c index cc8de480c..a347e615f 100644 --- a/src/adapter.c +++ b/src/adapter.c @@ -678,8 +678,20 @@ static int uuid_cmp(const void *a, const void *b) void adapter_service_insert(struct btd_adapter *adapter, void *r) { sdp_record_t *rec = r; + sdp_list_t *browse_list = NULL; + uuid_t browse_uuid; gboolean new_uuid; + /* skip record without a browse group */ + if (sdp_get_browse_groups(rec, &browse_list) < 0) + return; + + sdp_uuid16_create(&browse_uuid, PUBLIC_BROWSE_GROUP); + + /* skip record without public browse group */ + if (!sdp_list_find(browse_list, &browse_uuid, sdp_uuid_cmp)) + goto done; + if (sdp_list_find(adapter->services, &rec->svclass, uuid_cmp) == NULL) new_uuid = TRUE; else @@ -696,6 +708,9 @@ void adapter_service_insert(struct btd_adapter *adapter, void *r) if (adapter->initialized) g_dbus_emit_property_changed(btd_get_dbus_connection(), adapter->path, ADAPTER_INTERFACE, "UUIDs"); + +done: + sdp_list_free(browse_list, NULL); } void adapter_service_remove(struct btd_adapter *adapter, void *r) -- 2.47.3