sockets: Bypass "replace empty @path" for abstract unix sockets

unix_listen_saddr() replaces empty @path by unique value.  It obtains
the value by creating and deleting a unique temporary file with
mkstemp().  This is racy, as the comment explains.  It's also entirely
undocumented as far as I can tell.  Goes back to commit d247d25f18
"sockets: helper functions for qemu (Gerd Hoffman)", v0.10.0.

Since abstract socket addresses have no connection with filesystem
pathnames, making them up with mkstemp() seems inappropriate.  Bypass
the replacement of empty @path.

Reviewed-by: Eric Blake <eblake@redhat.com>
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
This commit is contained in:
Markus Armbruster 2020-11-02 10:44:21 +01:00 committed by Daniel P. Berrangé
parent dea7cd1794
commit ef298e3826

View File

@ -877,7 +877,7 @@ static int unix_listen_saddr(UnixSocketAddress *saddr,
return -1;
}
if (saddr->path && saddr->path[0]) {
if (saddr->path[0] || saddr->abstract) {
path = saddr->path;
} else {
const char *tmpdir = getenv("TMPDIR");