From eedca1b10cac3e119547ffa4710363add8410d8f Mon Sep 17 00:00:00 2001 From: Simon McVittie Date: Tue, 17 Feb 2015 13:46:53 +0000 Subject: [PATCH 1/2] dbus-launch: use libdbus to read the UUID As a side benefit, this means that dbus-launch now understands /etc/machine-id and not just /var/lib/dbus/machine-id. I'm using the "internal" (static) version of libdbus rather than the shared version, because my next commit is going to need that anyway. --- tools/Makefile.am | 17 ++++++++++++----- tools/dbus-launch.c | 36 ++++++++++-------------------------- tools/dbus-launch.h | 2 ++ 3 files changed, 24 insertions(+), 31 deletions(-) diff --git a/tools/Makefile.am b/tools/Makefile.am index 9046282..fafee1b 100644 --- a/tools/Makefile.am +++ b/tools/Makefile.am @@ -48,7 +48,18 @@ else dbus_launch_SOURCES= \ dbus-launch.c \ dbus-launch-x11.c \ - dbus-launch.h + dbus-launch.h \ + tool-common.c \ + tool-common.h \ + $(NULL) +dbus_launch_CPPFLAGS = \ + $(AM_CPPFLAGS) \ + -DDBUS_STATIC_BUILD \ + $(NULL) +dbus_launch_LDADD = \ + $(top_builddir)/dbus/libdbus-internal.la \ + $(DBUS_X_LIBS) \ + $(NULL) dbus_run_session_SOURCES = \ dbus-run-session.c @@ -77,10 +88,6 @@ dbus_uuidgen_LDADD = \ $(top_builddir)/dbus/libdbus-1.la \ $(NULL) -dbus_launch_LDADD = \ - $(DBUS_X_LIBS) \ - $(NULL) - examplesdir = ${docdir}/examples dist_examples_SCRIPTS = \ GetAllMatchRules.py \ diff --git a/tools/dbus-launch.c b/tools/dbus-launch.c index 41a20e8..1d9ab3e 100644 --- a/tools/dbus-launch.c +++ b/tools/dbus-launch.c @@ -106,46 +106,30 @@ save_machine_uuid (const char *uuid_arg) } #ifdef DBUS_BUILD_X11 -#define UUID_MAXLEN 40 /* Read the machine uuid from file if needed. Returns TRUE if machine_uuid is * set after this function */ static int read_machine_uuid_if_needed (void) { - FILE *f; - char uuid[UUID_MAXLEN]; - size_t len; - int ret = FALSE; + char *uuid; if (machine_uuid != NULL) return TRUE; - f = fopen (DBUS_MACHINE_UUID_FILE, "r"); - if (f == NULL) - return FALSE; - - if (fgets (uuid, UUID_MAXLEN, f) == NULL) - goto out; + uuid = dbus_get_local_machine_id (); - len = strlen (uuid); - if (len < 32) - goto out; + if (uuid == NULL) + return FALSE; - /* rstrip the read uuid */ - while (len > 31 && isspace((int) uuid[len - 1])) - len--; + /* one is allocated with malloc and the other with dbus_malloc so copy it */ + machine_uuid = xstrdup (uuid); - if (len != 32) - goto out; + if (machine_uuid == NULL) + tool_oom ("reading machine UUID"); - uuid[len] = '\0'; - machine_uuid = xstrdup (uuid); + dbus_free (uuid); verbose ("UID: %s\n", machine_uuid); - ret = TRUE; - -out: - fclose(f); - return ret; + return TRUE; } #endif /* DBUS_BUILD_X11 */ diff --git a/tools/dbus-launch.h b/tools/dbus-launch.h index 8220bb8..d0ede6b 100644 --- a/tools/dbus-launch.h +++ b/tools/dbus-launch.h @@ -26,6 +26,8 @@ #include +#include + #ifndef TRUE #define TRUE (1) #endif -- 2.1.4