[libvirt] [PATCH] daemon: Fix core dumps if unix_sock_group is set

Jiri Denemark jdenemar at redhat.com
Mon Jan 10 10:43:22 UTC 2011


> >> If you use  fchown(sock->fd) then you avoid any possible race issues.
> > 
> > Except that it doesn't work. That was the first thing I tried but fchown()
> > doesn't seem to work on unix sockets. The socket will still ended up with
> > root:root ownership regardless on where I put fchown() -- either before bind()
> > to avoid race issues or after it, which wouldn't be any better than chown().
> 
> POSIX states that fchown() on pipes and sockets is allowed (but not
> required) to fail with EINVAL.  I think it's a POSIX-compliance bug in
> the Linux kernel that it silently succeeds but ignores the change
> request, but to be truly portable, we have to use chown() rather than
> fchown() to avoid falling foul of the undefined behavior in the first
> place (whether or not we can convince kernel folks to either make
> fchown() fail with EINVAL or succeed at doing what we want).
> 
> So, I don't see any other alternatives, and your patch looks like the
> way to go.  ACK as-is.

Thanks, pushed.

Jirka




More information about the libvir-list mailing list