* bus/bus.c: Fix eavesdropping on method calls
authorJohn (J5) Palmieri <johnp@redhat.com>
Wed, 7 Jun 2006 20:07:34 +0000 (20:07 +0000)
committerJohn (J5) Palmieri <johnp@redhat.com>
Wed, 7 Jun 2006 20:07:34 +0000 (20:07 +0000)
ChangeLog
bus/bus.c

index 873f313..b25865a 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,9 @@
 2006-06-07  John (J5) Palmieri  <johnp@redhat.com>
 
+       * bus/bus.c: Fix eavesdropping on method calls
+
+2006-06-07  John (J5) Palmieri  <johnp@redhat.com>
+
        * configure.in:
        * dbus/dbus-userdb-util.c:
        Add Solaris console owner patch from Artem Kachitchkine
index 8e4f0ea..5c27708 100644 (file)
--- a/bus/bus.c
+++ b/bus/bus.c
@@ -1355,21 +1355,21 @@ bus_context_check_security_policy (BusContext     *context,
       return FALSE;
     }
 
-  if (type == DBUS_MESSAGE_TYPE_METHOD_CALL)
+  /* Record that we will allow a reply here in the future (don't
+   * bother if the recipient is the bus or this is an eavesdropping
+   * connection). Only the addressed recipient may reply.
+   */
+  if (type == DBUS_MESSAGE_TYPE_METHOD_CALL &&
+      sender && 
+      addressed_recipient &&
+      addressed_recipient == proposed_recipient && /* not eavesdropping */
+      !bus_connections_expect_reply (bus_connection_get_connections (sender),
+                                     transaction,
+                                     sender, addressed_recipient,
+                                     message, error))
     {
-      /* Record that we will allow a reply here in the future (don't
-       * bother if the recipient is the bus). Only the addressed recipient
-       * may reply.
-       */
-      if (sender && addressed_recipient &&
-          !bus_connections_expect_reply (bus_connection_get_connections (sender),
-                                         transaction,
-                                         sender, addressed_recipient,
-                                         message, error))
-        {
-          _dbus_verbose ("Failed to record reply expectation or problem with the message expecting a reply\n");
-          return FALSE;
-        }
+      _dbus_verbose ("Failed to record reply expectation or problem with the message expecting a reply\n");
+      return FALSE;
     }
   
   _dbus_verbose ("security policy allowing message\n");