From fd109dc29f512eb6dc48271faadb01e08e95ef31 Mon Sep 17 00:00:00 2001 From: Simon McVittie Date: Wed, 29 Jun 2011 17:29:16 +0100 Subject: [PATCH] _dbus_server_new_for_domain_socket: don't try to unlink abstract sockets Our abstract socket names look like filenames (/tmp/dbus-MwozdykBNK or whatever), so if we incorrectly unlink the abstract socket name, in highly unlikely circumstances we could accidentally unlink a non-abstract socket belonging to another process! --- dbus/dbus-server-unix.c | 18 +++++++++++++----- 1 files changed, 13 insertions(+), 5 deletions(-) diff --git a/dbus/dbus-server-unix.c b/dbus/dbus-server-unix.c index 70ad965..130f66e 100644 --- a/dbus/dbus-server-unix.c +++ b/dbus/dbus-server-unix.c @@ -251,11 +251,18 @@ _dbus_server_new_for_domain_socket (const char *path, goto failed_0; } - path_copy = _dbus_strdup (path); - if (path_copy == NULL) + if (abstract) { - dbus_set_error (error, DBUS_ERROR_NO_MEMORY, NULL); - goto failed_0; + path_copy = NULL; + } + else + { + path_copy = _dbus_strdup (path); + if (path_copy == NULL) + { + dbus_set_error (error, DBUS_ERROR_NO_MEMORY, NULL); + goto failed_0; + } } listen_fd = _dbus_listen_unix_socket (path, abstract, error); @@ -273,7 +280,8 @@ _dbus_server_new_for_domain_socket (const char *path, goto failed_2; } - _dbus_server_socket_own_filename(server, path_copy); + if (path_copy != NULL) + _dbus_server_socket_own_filename(server, path_copy); _dbus_string_free (&address); -- 1.7.5.4