From: Simon McVittie Date: Wed, 7 Jun 2017 13:47:12 +0000 (+0100) Subject: Unix sysdeps: Only copy /etc/machine-id to ${sysconfdir} in "ensure" mode X-Git-Tag: dbus-1.12.0~144 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=bde40c8970d7e1314edc9f84d5bf55c7fc6d8e57;p=platform%2Fupstream%2Fdbus.git 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 Reviewed-by: Philip Withnall Bug: https://bugs.freedesktop.org/show_bug.cgi?id=101257 --- diff --git a/dbus/dbus-sysdeps-unix.c b/dbus/dbus-sysdeps-unix.c index 8b6ac30..7bfb66f 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; }