[libvirt] [PATCH] systemd: fix ready notification on abstract socket
Daniel P. Berrange
berrange at redhat.com
Tue Jul 12 08:04:26 UTC 2016
On Mon, Jul 11, 2016 at 05:35:03PM -0600, Jim Fehlig wrote:
> At least with systemd v210, NOTIFY_SOCKET is abstact, e.g.
> @/org/freedesktop/systemd1/notify. sendmsg() fails on such a socket
> with "Connection refused". The unix(7) man page contains the following
> details wrt abstract socket addresses
>
> abstract: an abstract socket address is distinguished (from a
> pathname socket) by the fact that sun_path[0] is a null byte
> ('\0'). The socket's address in this namespace is given by the
> additional bytes in sun_path that are covered by the specified
> length of the address structure. (Null bytes in the name have
> no special significance.)
>
> So we need to be more precise about the address length, setting it to
> the sizeof sa_family_t + length of address copied to sun_path instead
> of setting it to the sizeof the entire sockaddr_un struct.
>
> Resolves: https://bugzilla.opensuse.org/show_bug.cgi?id=987668
> Signed-off-by: Jim Fehlig <jfehlig at suse.com>
> ---
> src/util/virsystemd.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/src/util/virsystemd.c b/src/util/virsystemd.c
> index 871db7e..1b5e9fe 100644
> --- a/src/util/virsystemd.c
> +++ b/src/util/virsystemd.c
> @@ -495,7 +495,6 @@ virSystemdNotifyStartup(void)
> };
> struct msghdr mh = {
> .msg_name = &un,
> - .msg_namelen = sizeof(un),
> .msg_iov = &iov,
> .msg_iovlen = 1,
> };
> @@ -521,6 +520,7 @@ virSystemdNotifyStartup(void)
> return;
> }
>
> + mh.msg_namelen = sizeof(sa_family_t) + strlen(path);
I'm wondering how safe sizeof(sa_family_t) is. Might it be better to
use offsetof(struct sockaddr_un, sun_path) + strlen(path)
> if (sendmsg(fd, &mh, MSG_NOSIGNAL) < 0)
> VIR_WARN("Failed to notify systemd");
Regards,
Daniel
--
|: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :|
|: http://libvirt.org -o- http://virt-manager.org :|
|: http://autobuild.org -o- http://search.cpan.org/~danberr/ :|
|: http://entangle-photo.org -o- http://live.gnome.org/gtk-vnc :|
More information about the libvir-list
mailing list