'Machine ID' underspecified?

"Thomas Kluyver" <[email protected]>
Newsgroups gmane.comp.freedesktop.dbus
Message-ID <[email protected]>
The standard org.freedesktop.DBus.Peer interface (https://dbus.freedesktop.org/doc/dbus-specification.html#standard-interfaces-peer ) defines a GetMachineId method. The spec says that this returns a UUID which "must be the same for all processes on a single system at least until that system next reboots."

libdbus handles calls to this method automatically, so if you're using that, you're covered. However, the spec doesn't define how other implementations can get a machine ID. It seems clear from the description that implementations can't just come up with their own way to make a suitable ID - they need to match the reference implementation (assuming they're talking on the standard message buses).

I looked into the code for the reference implementation. On Unix, it gets the ID from a compile-time configurable file (/var/lib/dbus/machine-id on my system) with a hardcoded fallback to /etc/machine-id:

https://gitlab.freedesktop.org/dbus/dbus/-/blob/2ef39181cfe1443c349500740855bf86f195f540/dbus/dbus-sysdeps-unix.c#L4257-4274

On Windows it appears to use a Windows API call GetCurrentHwProfileA to get a GUID representing the 'hardware profile', and reformat it into the UUID format D-Bus needs:

https://gitlab.freedesktop.org/dbus/dbus/-/blob/2ef39181cfe1443c349500740855bf86f195f540/dbus/dbus-sysdeps-win.c#L2820

Should this be described in the spec? Or is there a reason to leave it out? Can other implementations look for a file at /var/lib/dbus/machine-id on Unix systems, or does this location vary between distros?

Thanks,
Thomas
_______________________________________________
dbus mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/dbus
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.