1
diff -Nur -x '*.orig' -x '*~' dbus-1.0.2/bus/policy.c dbus-1.0.2.new/bus/policy.c
2
--- dbus-1.0.2/bus/policy.c 2006-12-11 11:21:22.000000000 -0800
3
+++ dbus-1.0.2.new/bus/policy.c 2008-10-13 19:12:53.000000000 -0700
6
if (rule->d.send.interface != NULL)
8
- if (dbus_message_get_interface (message) != NULL &&
9
- strcmp (dbus_message_get_interface (message),
10
- rule->d.send.interface) != 0)
11
+ /* The interface is optional in messages. For allow rules, if the message
12
+ * has no interface we want to skip the rule (and thus not allow);
13
+ * for deny rules, if the message has no interface we want to use the
14
+ * rule (and thus deny).
16
+ dbus_bool_t no_interface;
18
+ no_interface = dbus_message_get_interface (message) == NULL;
20
+ if ((no_interface && rule->allow) ||
22
+ strcmp (dbus_message_get_interface (message),
23
+ rule->d.send.interface) != 0))
25
_dbus_verbose (" (policy) skipping rule for different interface\n");
27
@@ -1117,9 +1127,19 @@
29
if (rule->d.receive.interface != NULL)
31
- if (dbus_message_get_interface (message) != NULL &&
32
- strcmp (dbus_message_get_interface (message),
33
- rule->d.receive.interface) != 0)
34
+ /* The interface is optional in messages. For allow rules, if the message
35
+ * has no interface we want to skip the rule (and thus not allow);
36
+ * for deny rules, if the message has no interface we want to use the
37
+ * rule (and thus deny).
39
+ dbus_bool_t no_interface;
41
+ no_interface = dbus_message_get_interface (message) == NULL;
43
+ if ((no_interface && rule->allow) ||
45
+ strcmp (dbus_message_get_interface (message),
46
+ rule->d.receive.interface) != 0))
48
_dbus_verbose (" (policy) skipping rule for different interface\n");