From 3c7c255ee7d5e478fa204a0f0848c98cc0e54a4f Mon Sep 17 00:00:00 2001 From: Alban Crequy Date: Sun, 4 Mar 2012 14:56:02 +0000 Subject: [PATCH] policy: enforce policy on "allow own_prefix" https://bugs.freedesktop.org/show_bug.cgi?id=46886 --- bus/policy.c | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/bus/policy.c b/bus/policy.c index 34e8446..222b3c5 100644 --- a/bus/policy.c +++ b/bus/policy.c @@ -1267,12 +1267,25 @@ bus_client_policy_check_can_own (BusClientPolicy *policy, if (rule->type != BUS_POLICY_RULE_OWN) continue; - if (rule->d.own.service_name != NULL) + if (!rule->d.own.prefix && rule->d.own.service_name != NULL) { if (!_dbus_string_equal_c_str (service_name, rule->d.own.service_name)) continue; } + else if (rule->d.own.prefix) + { + const char *data; + char next_char; + if (!_dbus_string_starts_with_c_str (service_name, + rule->d.own.service_name)) + continue; + + data = _dbus_string_get_const_data (service_name); + next_char = data[strlen (rule->d.own.service_name)]; + if (next_char != '\0' && next_char != '.') + continue; + } /* Use this rule */ allowed = rule->allow; -- 2.7.4