[daemon-fix] Fixed sending daemon match rules for kdbus broadcasts
[platform/upstream/dbus.git] / tools / dbus-run-session.c
index 4f0b32b..105ab3b 100644 (file)
@@ -34,6 +34,9 @@
 
 #include <sys/types.h>
 #include <sys/wait.h>
+#include <signal.h>
+
+#include "dbus/dbus.h"
 
 #define MAX_ADDR_LEN 512
 #define PIPE_READ_END  0
@@ -99,22 +102,6 @@ oom (void)
   exit (1);
 }
 
-static void *
-xmalloc (size_t bytes)
-{
-  void *ret;
-
-  if (bytes == 0)
-    bytes = 1;
-
-  ret = malloc (bytes);
-
-  if (ret == NULL)
-    oom ();
-
-  return ret;
-}
-
 typedef enum
 {
   READ_STATUS_OK,    /**< Read succeeded */
@@ -227,7 +214,6 @@ main (int argc, char **argv)
   int requires_arg = 0;
   pid_t bus_pid;
   pid_t app_pid;
-  char *envvar;
 
   while (i < argc)
     {
@@ -396,11 +382,12 @@ main (int argc, char **argv)
 
   close (bus_address_pipe[PIPE_READ_END]);
 
-  envvar = xmalloc (strlen ("DBUS_SESSION_BUS_ADDRESS=") +
-                    strlen (bus_address) + 1);
-  strcpy (envvar, "DBUS_SESSION_BUS_ADDRESS=");
-  strcat (envvar, bus_address);
-  putenv (envvar);
+  if (!dbus_setenv ("DBUS_SESSION_BUS_ADDRESS", bus_address) ||
+      !dbus_setenv ("DBUS_SESSION_BUS_PID", NULL) ||
+      !dbus_setenv ("DBUS_SESSION_BUS_WINDOWID", NULL) ||
+      !dbus_setenv ("DBUS_STARTER_ADDRESS", NULL) ||
+      !dbus_setenv ("DBUS_STARTER_BUS_TYPE", NULL))
+    oom ();
 
   app_pid = fork ();