diff options
author | Simon McVittie <simon.mcvittie@collabora.co.uk> | 2015-05-12 11:35:04 +0100 |
---|---|---|
committer | Simon McVittie <simon.mcvittie@collabora.co.uk> | 2015-05-14 14:30:30 +0100 |
commit | f385324d8b03eab13f3e618ce9a0018977c9a7cb (patch) | |
tree | 84528b88cc370981440f06a6d4592e745c0e2b04 /dbus/dbus-server.c | |
parent | 49646211f3c8dcdc3728f4059c61c05ef4df857c (diff) | |
download | dbus-f385324d8b03eab13f3e618ce9a0018977c9a7cb.tar.gz |
Make UUID generation failable
Previously, this would always succeed, but might use
weak random numbers in rare failure cases. I don't think
these UUIDs are security-sensitive, but if they're generated
by a PRNG as weak as rand() (<= 32 bits of entropy), we
certainly can't claim that they're universally unique.
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=90414
Reviewed-by: Ralf Habacker <ralf.habacker@freenet.de>
[smcv: document @error]
Signed-off-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
Diffstat (limited to 'dbus/dbus-server.c')
-rw-r--r-- | dbus/dbus-server.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/dbus/dbus-server.c b/dbus/dbus-server.c index 42891bde..9af906fa 100644 --- a/dbus/dbus-server.c +++ b/dbus/dbus-server.c @@ -137,7 +137,8 @@ _dbus_server_init_base (DBusServer *server, return FALSE; } - _dbus_generate_uuid (&server->guid); + if (!_dbus_generate_uuid (&server->guid, error)) + goto failed; if (!_dbus_uuid_encode (&server->guid, &server->guid_hex)) goto oom; @@ -167,6 +168,7 @@ _dbus_server_init_base (DBusServer *server, oom: _DBUS_SET_OOM (error); + failed: _dbus_rmutex_free_at_location (&server->mutex); server->mutex = NULL; if (server->watches) |