All of lore.kernel.org
 help / color / mirror / Atom feed
* qemu-sockets: account for trailing \0 byte in unix socket pathname
@ 2021-08-30 22:54 Michael Tokarev
  2021-08-31 12:32 ` Marc-André Lureau
  2021-08-31 17:17 ` Michael Tokarev
  0 siblings, 2 replies; 8+ messages in thread
From: Michael Tokarev @ 2021-08-30 22:54 UTC (permalink / raw)
  To: qemu-devel; +Cc: Marc-André Lureau, Michael Tokarev, qemu-stable

Linux kernel can return size of af_unix socket to be
one byte larger than sockaddr_un structure - adding
the trailing zero byte.

Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
Fixes: 4cfd970ec188558daa6214f26203fe553fb1e01f (first in 6.1.0)
Cc: qemu-stable@nongnu.org

diff --git a/util/qemu-sockets.c b/util/qemu-sockets.c
index f2f3676d1f..83926dc2bc 100644
--- a/util/qemu-sockets.c
+++ b/util/qemu-sockets.c
@@ -1345,8 +1345,9 @@ socket_sockaddr_to_address_unix(struct sockaddr_storage *sa,
     SocketAddress *addr;
     struct sockaddr_un *su = (struct sockaddr_un *)sa;
 
+    /* kernel might have added \0 terminator to non-abstract socket */
     assert(salen >= sizeof(su->sun_family) + 1 &&
-           salen <= sizeof(struct sockaddr_un));
+           salen <= sizeof(struct sockaddr_un) + su->sun_path[0] ? 1 : 0);
 
     addr = g_new0(SocketAddress, 1);
     addr->type = SOCKET_ADDRESS_TYPE_UNIX;


^ permalink raw reply related	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2021-08-31 17:56 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-08-30 22:54 qemu-sockets: account for trailing \0 byte in unix socket pathname Michael Tokarev
2021-08-31 12:32 ` Marc-André Lureau
2021-08-31 13:11   ` Daniel P. Berrangé
2021-08-31 17:17 ` Michael Tokarev
2021-08-31 17:22   ` Marc-André Lureau
2021-08-31 17:38     ` Daniel P. Berrangé
2021-08-31 17:47       ` Michael Tokarev
2021-08-31 17:51         ` Daniel P. Berrangé

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.