From: Simon McVittie Date: Wed, 29 Jun 2011 16:29:16 +0000 (+0100) Subject: _dbus_server_new_for_domain_socket: don't try to unlink abstract sockets X-Git-Tag: dbus-1.4.16~38 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=20e2dc7c74cd1e1232db56e4655de264d17aae6f;p=thirdparty%2Fdbus.git _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! Bug: https://bugs.freedesktop.org/show_bug.cgi?id=38656 Reviewed-by: Will Thompson --- diff --git a/dbus/dbus-server-unix.c b/dbus/dbus-server-unix.c index 70ad9654d..130f66ec2 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);