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 <eblake@xxxxxxxxxx> > (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@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list