diff options
author | Carlos Garnacho <carlosg@gnome.org> | 2020-01-25 14:26:12 +0100 |
---|---|---|
committer | Carlos Garnacho <carlosg@gnome.org> | 2020-07-17 13:41:03 +0200 |
commit | 8a745e17ba5ecfc43e47db7d5ca6593df6c04103 (patch) | |
tree | 54ce3ce6e33516f28dd9503070628e9d8852c9f5 /src/portal | |
parent | b3d38379dd6e8f10a557e4ef4b6a9ab846ab44f0 (diff) | |
download | tracker-8a745e17ba5ecfc43e47db7d5ca6593df6c04103.tar.gz |
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=*
Diffstat (limited to 'src/portal')
-rw-r--r-- | src/portal/tracker-portal.c | 18 |
1 files changed, 17 insertions, 1 deletions
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[] = "<node>" @@ -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; |