From 8a745e17ba5ecfc43e47db7d5ca6593df6c04103 Mon Sep 17 00:00:00 2001 From: Carlos Garnacho Date: Sat, 25 Jan 2020 14:26:12 +0100 Subject: portal: Handle default object path in lookups If the service URI we are asking permissions for has the default object path, ensure we look it up with it being implicitly defined. This allows the following policies to work the same: dbus:org.example.Endpoint=* dbus:org.example.Endpoint:/org/freedesktop/Tracker1/Endpoint=* --- src/portal/tracker-portal.c | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) (limited to 'src/portal') diff --git a/src/portal/tracker-portal.c b/src/portal/tracker-portal.c index 02098756c..2e58a7228 100644 --- a/src/portal/tracker-portal.c +++ b/src/portal/tracker-portal.c @@ -64,6 +64,7 @@ G_DEFINE_TYPE_WITH_CODE (TrackerPortal, tracker_portal, G_TYPE_OBJECT, G_IMPLEMENT_INTERFACE (G_TYPE_INITABLE, tracker_portal_initable_iface_init)) #define TRACKER_GROUP_NAME "Policy Tracker3" +#define DEFAULT_URI_SUFFIX ":/org/freedesktop/Tracker3/Endpoint" static const gchar portal_xml[] = "" @@ -222,7 +223,22 @@ load_client_configuration (GDBusMethodInvocation *invocation, graphs = g_key_file_get_string_list (flatpak_info, TRACKER_GROUP_NAME, service_uri, - NULL, error); + NULL, NULL); + + if (!graphs && g_str_has_suffix (service_uri, DEFAULT_URI_SUFFIX)) { + gchar *default_service_uri; + + default_service_uri = g_strndup (service_uri, + strlen (service_uri) - + strlen (DEFAULT_URI_SUFFIX)); + + graphs = g_key_file_get_string_list (flatpak_info, + TRACKER_GROUP_NAME, + default_service_uri, + NULL, error); + g_free (default_service_uri); + } + if (!graphs) { g_debug ("Service '%s' not found in Tracker policy", service_uri); return NULL; -- cgit v1.2.1