_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 <will.thompson@collabora.co.uk>
This commit is contained in:
Simon McVittie 2011-06-29 17:29:16 +01:00
parent ba2892396a
commit 20e2dc7c74

View file

@ -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);