Re: [Qemu-devel] [PATCH v2 02/20] 9p: proxy: Fix size passed to `connect`

2018-06-01 Thread Greg Kurz
On Thu, 31 May 2018 21:25:57 -0400
Keno Fischer  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 *) ,
  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 
> ---
> 
> 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 *), size) < 0) {
> +if (connect(sockfd, (struct sockaddr *), sizeof(helper)) < 0) {
>  error_setg_errno(errp, errno, "failed to connect to '%s'", path);
>  close(sockfd);
>  return -1;




[Qemu-devel] [PATCH v2 02/20] 9p: proxy: Fix size passed to `connect`

2018-05-31 Thread Keno Fischer
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.

Signed-off-by: Keno Fischer 
---

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 *), size) < 0) {
+if (connect(sockfd, (struct sockaddr *), sizeof(helper)) < 0) {
 error_setg_errno(errp, errno, "failed to connect to '%s'", path);
 close(sockfd);
 return -1;
-- 
2.8.1