summaryrefslogtreecommitdiff
path: root/src/portal
diff options
context:
space:
mode:
authorCarlos Garnacho <carlosg@gnome.org>2020-01-25 14:26:12 +0100
committerCarlos Garnacho <carlosg@gnome.org>2020-07-17 13:41:03 +0200
commit8a745e17ba5ecfc43e47db7d5ca6593df6c04103 (patch)
tree54ce3ce6e33516f28dd9503070628e9d8852c9f5 /src/portal
parentb3d38379dd6e8f10a557e4ef4b6a9ab846ab44f0 (diff)
downloadtracker-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.c18
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;