Index: havp/helper.cpp --- havp/helper.cpp.orig +++ havp/helper.cpp @@ -341,6 +341,16 @@ bool ChangeUserAndGroup( string usr, string grp ) return false; } + /* + * Set the GID before initgroups(), since on some platforms + * setgid() is known to zap the group list. + */ + if ( setgid( my_group->gr_gid ) < 0 ) + { + cout << "Could not change group to: " << grp << endl; + return false; + } + #ifdef HAVE_INITGROUPS if ( initgroups( usr.c_str(), user->pw_gid ) ) { @@ -356,12 +366,6 @@ bool ChangeUserAndGroup( string usr, string grp ) } #endif #endif - - if ( setgid( my_group->gr_gid ) < 0 ) - { - cout << "Could not change group to: " << grp << endl; - return false; - } if ( setuid( user->pw_uid ) < 0 ) {