dann, can you please add a printf to util/qemu-sockets.c
before the assert() which is failing, to see what's the
value of salen? since you can reproduce this..
I'm still not 100% sure what the actual problem is -
or _which_ problem it is in particular.

It is either one byte too large (for the trailing \0)
or one byte too small (with zero-length sun_path).

Like this:

diff --git a/util/qemu-sockets.c b/util/qemu-sockets.c
index f2f3676d1f..89a405476a 100644
--- a/util/qemu-sockets.c
+++ b/util/qemu-sockets.c
@@ -1345,6 +1345,10 @@ socket_sockaddr_to_address_unix(struct sockaddr_storage 
*sa,
     SocketAddress *addr;
     struct sockaddr_un *su = (struct sockaddr_un *)sa;

+if(!(salen >= sizeof(su->sun_family) + 1 &&
+           salen <= sizeof(struct sockaddr_un)))
+  fprintf(stderr, "about to fire assert: salen=%d\n", salen);
+
     assert(salen >= sizeof(su->sun_family) + 1 &&
            salen <= sizeof(struct sockaddr_un));


thank you!

Reply via email to