contrib/vhost-user-blk: fix bind() using the right size of the address
authorStefano Garzarella <sgarzare@redhat.com>
Tue, 18 Jun 2024 10:04:39 +0000 (12:04 +0200)
committerMichael S. Tsirkin <mst@redhat.com>
Tue, 2 Jul 2024 13:27:56 +0000 (09:27 -0400)
commit03582094da1ea7ce978cec58008c81f7458ee8dd
tree65d9c3cbae9cde1904c02b4e22dbca08956de004
parent4c58843e5d3192c67394b28a3330144ea56eefac
contrib/vhost-user-blk: fix bind() using the right size of the address

On macOS passing `-s /tmp/vhost.socket` parameter to the vhost-user-blk
application, the bind was done on `/tmp/vhost.socke` pathname,
missing the last character.

This sounds like one of the portability problems described in the
unix(7) manpage:

   Pathname sockets
       When  binding  a socket to a pathname, a few rules should
       be observed for maximum portability and ease of coding:

       •  The pathname in sun_path should be null-terminated.

       •  The length of the pathname, including the  terminating
          null byte, should not exceed the size of sun_path.

       •  The  addrlen  argument  that  describes  the enclosing
          sockaddr_un structure should have a value of at least:

              offsetof(struct sockaddr_un, sun_path) +
              strlen(addr.sun_path)+1

          or,  more  simply,  addrlen  can   be   specified   as
          sizeof(struct sockaddr_un).

So let's follow the last advice and simplify the code as well.

Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Tested-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Acked-by: Stefan Hajnoczi <stefanha@redhat.com>
Reviewed-by: David Hildenbrand <david@redhat.com>
Signed-off-by: Stefano Garzarella <sgarzare@redhat.com>
Message-Id: <20240618100440.145664-1-sgarzare@redhat.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
contrib/vhost-user-blk/vhost-user-blk.c