On 07/23/2013 11:03 AM, Eric Blake wrote:
> https://bugzilla.redhat.com/show_bug.cgi?id=964358
> 
> Since neither getpwuid_r() nor initgroups() are safe to call in
> between fork and exec (they obtain a mutex, but if some other
> thread in the parent also held the mutex at the time of the fork,
> the child will deadlock), we have to split out the functionality
> that is unsafe.  At least glibc's initgroups() uses getgrouplist
> under the hood, so the ideal split is to expose getgrouplist for
> use before a fork.  Gnulib already gives us a nice wrapper via
> mgetgroups; we wrap it once more to look up by uid instead of name.
> 
> * bootstrap.conf (gnulib_modules): Add mgetgroups.
> * src/util/virutil.h (virGetGroupList): New declaration.
> * src/util/virutil.c (virGetGroupList): New function.
> * src/libvirt_private.syms (virutil.h): Export it.
> 
> Signed-off-by: Eric Blake <ebl...@redhat.com>
> (cherry picked from commit 75c125641ac73473ba4b0542524d67a184769c8e)
> 
> Conflicts:
>       bootstrap.conf - not updating gnulib submodule...
>       configure.ac - ...so checking for getgrouplist by hand...
>       src/util/virutil.c - ...and copying only the getgrouplist 
> implementation rather than calling the gnulib function; also, file still 
> named util.c
>       src/libvirt_private.syms - context

ACK

- Cole

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list

Reply via email to