On Thu, 31 May 2018 21:25:57 -0400 Keno Fischer <k...@juliacomputing.com> wrote:
> The size to pass to the `connect` call is the size of the entire > `struct sockaddr_un`. Passing anything shorter than this causes errors > on darwin. > From the linux unix(7) manual page: ret = connect (data_socket, (const struct sockaddr *) &addr, sizeof(struct sockaddr_un)); Not sure why it was done differently, but I definitely prefer the fixed size version. Applied to 9p-next. Thanks ! > Signed-off-by: Keno Fischer <k...@juliacomputing.com> > --- > > Changes since v1: New patch > > hw/9pfs/9p-proxy.c | 5 ++--- > 1 file changed, 2 insertions(+), 3 deletions(-) > > diff --git a/hw/9pfs/9p-proxy.c b/hw/9pfs/9p-proxy.c > index e2e0329..47a94e0 100644 > --- a/hw/9pfs/9p-proxy.c > +++ b/hw/9pfs/9p-proxy.c > @@ -1088,7 +1088,7 @@ static int proxy_ioc_getversion(FsContext *fs_ctx, > V9fsPath *path, > > static int connect_namedsocket(const char *path, Error **errp) > { > - int sockfd, size; > + int sockfd; > struct sockaddr_un helper; > > if (strlen(path) >= sizeof(helper.sun_path)) { > @@ -1102,8 +1102,7 @@ static int connect_namedsocket(const char *path, Error > **errp) > } > strcpy(helper.sun_path, path); > helper.sun_family = AF_UNIX; > - size = strlen(helper.sun_path) + sizeof(helper.sun_family); > - if (connect(sockfd, (struct sockaddr *)&helper, size) < 0) { > + if (connect(sockfd, (struct sockaddr *)&helper, sizeof(helper)) < 0) { > error_setg_errno(errp, errno, "failed to connect to '%s'", path); > close(sockfd); > return -1;