From d728d0e1b43689fbf207cd662cb9b1c69498de82 Mon Sep 17 00:00:00 2001 From: Simon McVittie Date: Wed, 7 Jun 2017 14:47:12 +0100 Subject: [PATCH 09/14] Unix sysdeps: Only copy /etc/machine-id to ${sysconfdir} in "ensure" mode System integration scripts use dbus-uuidgen --ensure, so they are unaffected by this, and in particular the solution to Bug #77941 is still valid. The shared library is typically loaded by unprivileged users, so trying to write out the machine-id file is not going to work anyway. However, if we *can* write to our ${sysconfdir} - notably during `make distcheck` - then it is unexpected that merely reading the machine ID has the side-effect of writing to ${sysconfdir}, and in particular it will make the check for a complete uninstall fail. We definitely must not delete the machine ID during `make uninstall`. Signed-off-by: Simon McVittie --- dbus/dbus-sysdeps-unix.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/dbus/dbus-sysdeps-unix.c b/dbus/dbus-sysdeps-unix.c index 8b6ac306..7bfb66fe 100644 --- a/dbus/dbus-sysdeps-unix.c +++ b/dbus/dbus-sysdeps-unix.c @@ -3922,10 +3922,13 @@ _dbus_read_local_machine_uuid (DBusGUID *machine_id, if (b) { - /* try to copy it to the DBUS_MACHINE_UUID_FILE, but do not - * complain if that isn't possible for whatever reason */ - _dbus_string_init_const (&filename, DBUS_MACHINE_UUID_FILE); - _dbus_write_uuid_file (&filename, machine_id, NULL); + if (create_if_not_found) + { + /* try to copy it to the DBUS_MACHINE_UUID_FILE, but do not + * complain if that isn't possible for whatever reason */ + _dbus_string_init_const (&filename, DBUS_MACHINE_UUID_FILE); + _dbus_write_uuid_file (&filename, machine_id, NULL); + } return TRUE; } -- 2.11.0