fix for passfd on 64-bit BSD

Daniel P. Berrangé berrange at redhat.com
Wed Feb 17 10:03:18 UTC 2021


On Wed, Feb 17, 2021 at 03:54:36AM +0100, Bruno Haible wrote:
> Hi,
> 
> Since libvirt has a clone of gnulib's passfd module in libvirt, find attached
> a port of the recent fix
> <https://lists.gnu.org/archive/html/bug-gnulib/2021-02/msg00066.html>.

Thanks for taking the time to send us a patch !


> From d7e64f40c41fd6a95e3187de7bf37800f63a6b4e Mon Sep 17 00:00:00 2001
> From: Bruno Haible <bruno at clisp.org>
> Date: Wed, 17 Feb 2021 03:47:56 +0100
> Subject: [PATCH] util: Fix file descriptor passing on 64-bit FreeBSD and
>  NetBSD.
> 
> * src/util/virsocket.c (virSocketRecvFD): Set msg.msg_controllen as documented
> in the man pages.
> ---
>  src/util/virsocket.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/src/util/virsocket.c b/src/util/virsocket.c
> index c8435a1..b971da1 100644
> --- a/src/util/virsocket.c
> +++ b/src/util/virsocket.c
> @@ -1,6 +1,6 @@
>  /*
>   * Copyright (C) 2020 Red Hat, Inc.
> - * Copyright (C) 2011-2020 Free Software Foundation, Inc.
> + * Copyright (C) 2011-2021 Free Software Foundation, Inc.
>   *
>   * This library is free software; you can redistribute it and/or
>   * modify it under the terms of the GNU Lesser General Public
> @@ -457,7 +457,7 @@ virSocketRecvFD(int sock, int fdflags)
>      cmsg->cmsg_len = CMSG_LEN(sizeof(fd));
>      /* Initialize the payload: */
>      memcpy(CMSG_DATA(cmsg), &fd, sizeof(fd));
> -    msg.msg_controllen = cmsg->cmsg_len;
> +    msg.msg_controllen = CMSG_SPACE(sizeof(fd));
>  
>      len = recvmsg(sock, &msg, fdflags_recvmsg);
>      if (len < 0)

Reviewed-by: Daniel P. Berrangé <berrange at redhat.com>

Regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|




More information about the libvir-list mailing list