2003-03-17 Anders Carlsson <andersca@codefactory.se>
authorAnders Carlsson <andersca@codefactory.se>
Mon, 17 Mar 2003 06:49:33 +0000 (06:49 +0000)
committerAnders Carlsson <andersca@codefactory.se>
Mon, 17 Mar 2003 06:49:33 +0000 (06:49 +0000)
* bus/dispatch.c: (bus_dispatch):
Refetch the service name since it may have been reallocated
when dbus_message_set_sender was called.

* dbus/dbus-sysdeps.c: (_dbus_accept):
Add address and address length variables and use them to stop
valgrind from complaining.

ChangeLog
bus/dispatch.c
dbus/dbus-sysdeps.c

index 0796f2a..1b5ee00 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+2003-03-17  Anders Carlsson  <andersca@codefactory.se>
+
+       * bus/dispatch.c: (bus_dispatch):
+       Refetch the service name since it may have been reallocated
+       when dbus_message_set_sender was called.
+       
+       * dbus/dbus-sysdeps.c: (_dbus_accept):
+       Add address and address length variables and use them to stop
+       valgrind from complaining.
+       
 2003-03-17  Havoc Pennington  <hp@pobox.com>
 
        All tests pass, no memleaks, no valgrind complaints.
index 5365a11..33289e1 100644 (file)
@@ -208,18 +208,25 @@ bus_dispatch (DBusConnection *connection,
     {
       sender = bus_connection_get_name (connection);
       _dbus_assert (sender != NULL);
-      
+
       if (!dbus_message_set_sender (message, sender))
         {
           BUS_SET_OOM (&error);
           goto out;
         }
+
+      /* We need to refetch the service name here, because
+       * dbus_message_set_sender can cause the header to be
+       * reallocated, and thus the service_name pointer will become
+       * invalid.
+       */
+      service_name = dbus_message_get_service (message);
     }
 
   if (strcmp (service_name, DBUS_SERVICE_DBUS) == 0) /* to bus driver */
     {
       if (!bus_driver_handle_message (connection, transaction, message, &error))
-        goto out;
+       goto out;
     }
   else if (!bus_connection_is_active (connection)) /* clients must talk to bus driver first */
     {
index 8abcc5f..5a79e8f 100644 (file)
@@ -786,9 +786,13 @@ int
 _dbus_accept  (int listen_fd)
 {
   int client_fd;
+  struct sockaddr addr;
+  socklen_t addrlen;
+
+  addrlen = sizeof (addr);
   
  retry:
-  client_fd = accept (listen_fd, NULL, NULL);
+  client_fd = accept (listen_fd, &addr, &addrlen);
   
   if (client_fd < 0)
     {