diff options
author | Havoc Pennington <hp@redhat.com> | 2006-11-15 01:52:01 +0000 |
---|---|---|
committer | Havoc Pennington <hp@redhat.com> | 2006-11-15 01:52:01 +0000 |
commit | dbc061b8123799e9352ab069b4dc1b5ea394587d (patch) | |
tree | 844a285a90e00397c6fc2d4323375c5d130f8684 /dbus | |
parent | 2d760baacebcabf276261eb8999a7d29cefc3ac5 (diff) |
2006-11-14 Havoc Pennington <hp@redhat.com>
* dbus/dbus-internals.c (_dbus_generate_uuid): The spec said the
UUID had the timestamp last, but the implementation had it first;
move it to last since I think it's a tiny bit nicer (easier to
compare at a glance, faster to sort, less code), and will not
cause any practical compatibility problems. Also, always convert
the timestamp to big endian.
* doc/dbus-specification.xml: Clean up the docs on the UUID.
* tools/dbus-uuidgen.1: more prominently say it is not suitable
as a replacement for regular uuidgen/RFC4122.
Diffstat (limited to 'dbus')
-rw-r--r-- | dbus/dbus-connection.c | 5 | ||||
-rw-r--r-- | dbus/dbus-internals.c | 11 | ||||
-rw-r--r-- | dbus/dbus-internals.h | 5 |
3 files changed, 10 insertions, 11 deletions
diff --git a/dbus/dbus-connection.c b/dbus/dbus-connection.c index 552ecfd8..268a97d6 100644 --- a/dbus/dbus-connection.c +++ b/dbus/dbus-connection.c @@ -5511,7 +5511,10 @@ dbus_connection_get_outgoing_size (DBusConnection *connection) * If the remote application has the same machine ID as the one * returned by this function, then the remote application is on the * same machine as your application. - * + * + * The UUID is not a UUID in the sense of RFC4122; the details + * are explained in the D-Bus specification. + * * @returns a 32-byte-long hex-encoded UUID string, or #NULL if insufficient memory */ char* diff --git a/dbus/dbus-internals.c b/dbus/dbus-internals.c index 961e7269..788b3529 100644 --- a/dbus/dbus-internals.c +++ b/dbus/dbus-internals.c @@ -22,6 +22,7 @@ */ #include "dbus-internals.h" #include "dbus-protocol.h" +#include "dbus-marshal-basic.h" #include "dbus-test.h" #include <stdio.h> #include <stdarg.h> @@ -505,18 +506,12 @@ void _dbus_generate_uuid (DBusGUID *uuid) { long now; - char *p; - int ts_size; _dbus_get_current_time (&now, NULL); - uuid->as_uint32s[0] = now; - - ts_size = sizeof (uuid->as_uint32s[0]); - p = ((char*)uuid->as_bytes) + ts_size; + uuid->as_uint32s[DBUS_UUID_LENGTH_WORDS - 1] = DBUS_UINT32_TO_BE (now); - _dbus_generate_random_bytes_buffer (p, - sizeof (uuid->as_bytes) - ts_size); + _dbus_generate_random_bytes_buffer (uuid->as_bytes, DBUS_UUID_LENGTH_BYTES - 4); } /** diff --git a/dbus/dbus-internals.h b/dbus/dbus-internals.h index 4d839241..750882b9 100644 --- a/dbus/dbus-internals.h +++ b/dbus/dbus-internals.h @@ -318,7 +318,8 @@ void _dbus_set_bad_address (DBusError *error, const char *address_problem_other); #define DBUS_UUID_LENGTH_BYTES 16 -#define DBUS_UUID_LENGTH_HEX (DBUS_UUID_LENGTH_BYTES * 2) +#define DBUS_UUID_LENGTH_WORDS (DBUS_UUID_LENGTH_BYTES / 4) +#define DBUS_UUID_LENGTH_HEX (DBUS_UUID_LENGTH_BYTES * 2) /** * A globally unique ID ; we have one for each DBusServer, and also one for each @@ -326,7 +327,7 @@ void _dbus_set_bad_address (DBusError *error, */ union DBusGUID { - dbus_uint32_t as_uint32s[DBUS_UUID_LENGTH_BYTES / 4]; /**< guid as four uint32 values */ + dbus_uint32_t as_uint32s[DBUS_UUID_LENGTH_WORDS]; /**< guid as four uint32 values */ char as_bytes[DBUS_UUID_LENGTH_BYTES]; /**< guid as 16 single-byte values */ }; |