--- dbus-sysdeps-unix.c	2008-02-26 17:02:27.000000000 +0100
+++ /tmp/dbus-sysdeps-unix.c	2008-05-15 23:29:41.000000000 +0200
@@ -2844,7 +2844,9 @@
   if (pid == 0)
     {
       /* child process */
+      int maxfds = getdtablesize();
       int fd = open ("/dev/null", O_RDWR);
+
       if (fd == -1)
         /* huh?! can't open /dev/null? */
         _exit (1);
@@ -2865,9 +2867,10 @@
       if (dup2 (errors_pipe[WRITE_END], 2) == -1)
         _exit (1);
 
-      close (fd);
-      close (address_pipe[WRITE_END]);
-      close (errors_pipe[WRITE_END]);
+      /* close all inherited fds */
+      for( i = 0; i<maxfds; i++)
+        if (i>2)
+          close(i);
 
       execv (DBUS_BINDIR "/dbus-launch", argv);