summaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
authorSimon McVittie <simon.mcvittie@collabora.co.uk>2013-06-05 19:58:33 +0100
committerSimon McVittie <simon.mcvittie@collabora.co.uk>2013-08-23 11:41:16 +0100
commit5ee72fe2e1e8fbb7ae09174e8df3ca28228ddd9b (patch)
treee461cda690431a6a4492241a3e0bd0f39401896c /tools
parent412538b3b9fb424c3af313815c3928a9ec221ad7 (diff)
downloaddbus-5ee72fe2e1e8fbb7ae09174e8df3ca28228ddd9b.tar.gz
dbus-run-session: remove various extra variables from the environment
DBUS_SESSION_BUS_PID is not mandatory to set, but we should unset it if present, since it points to a different session's bus. Likewise for DBUS_SESSION_BUS_WINDOWID. Similarly, if DBUS_STARTER_BUS_TYPE and DBUS_STARTER_ADDRESS are set (as they would be under GNOME Terminal 3.8, see <https://bugs.freedesktop.org/show_bug.cgi?id=63119>) then they are likely to point to a different session's bus. Bug: https://bugs.freedesktop.org/show_bug.cgi?id=39196 Signed-off-by: Simon McVittie <simon.mcvittie@collabora.co.uk> Reviewed-by: Colin Walters <walters@verbum.org>
Diffstat (limited to 'tools')
-rw-r--r--tools/Makefile.am4
-rw-r--r--tools/dbus-run-session.c30
2 files changed, 12 insertions, 22 deletions
diff --git a/tools/Makefile.am b/tools/Makefile.am
index 464a8050..73d95fcf 100644
--- a/tools/Makefile.am
+++ b/tools/Makefile.am
@@ -47,6 +47,10 @@ dbus_launch_SOURCES= \
dbus_run_session_SOURCES = \
dbus-run-session.c
+
+dbus_run_session_LDADD = \
+ $(top_builddir)/dbus/libdbus-1.la \
+ $(NULL)
endif
dbus_cleanup_sockets_SOURCES= \
diff --git a/tools/dbus-run-session.c b/tools/dbus-run-session.c
index 4f7243f7..105ab3b4 100644
--- a/tools/dbus-run-session.c
+++ b/tools/dbus-run-session.c
@@ -36,6 +36,8 @@
#include <sys/wait.h>
#include <signal.h>
+#include "dbus/dbus.h"
+
#define MAX_ADDR_LEN 512
#define PIPE_READ_END 0
#define PIPE_WRITE_END 1
@@ -100,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 */
@@ -228,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)
{
@@ -397,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 ();