summaryrefslogtreecommitdiff
path: root/dbus/dbus-server.c
diff options
context:
space:
mode:
authorSimon McVittie <simon.mcvittie@collabora.co.uk>2015-05-12 11:35:04 +0100
committerSimon McVittie <simon.mcvittie@collabora.co.uk>2015-05-14 14:30:30 +0100
commitf385324d8b03eab13f3e618ce9a0018977c9a7cb (patch)
tree84528b88cc370981440f06a6d4592e745c0e2b04 /dbus/dbus-server.c
parent49646211f3c8dcdc3728f4059c61c05ef4df857c (diff)
downloaddbus-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.c4
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)