--- sudo-1.6.8p12/configure.in.getgrouplist 2007-04-12 10:16:12.000000000 +0200 +++ sudo-1.6.8p12/configure.in 2007-04-12 10:18:16.000000000 +0200 @@ -1694,7 +1694,7 @@ dnl Function checks dnl AC_CHECK_FUNCS(strchr strrchr memchr memcpy memset sysconf tzset \ - strftime setrlimit initgroups fstat gettimeofday) + strftime setrlimit initgroups getgrouplist fstat gettimeofday) AC_CHECK_FUNCS(seteuid, , [AC_DEFINE(NO_SAVED_IDS)]) if test -z "$SKIP_SETRESUID"; then AC_CHECK_FUNCS(setresuid, [SKIP_SETREUID=yes]) --- sudo-1.6.8p12/configure.getgrouplist 2005-10-28 02:48:25.000000000 +0200 +++ sudo-1.6.8p12/configure 2007-04-12 10:18:16.000000000 +0200 @@ -24677,7 +24677,7 @@ for ac_func in strchr strrchr memchr memcpy memset sysconf tzset \ - strftime setrlimit initgroups fstat gettimeofday + strftime setrlimit initgroups getgrouplist fstat gettimeofday do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` echo "$as_me:$LINENO: checking for $ac_func" >&5 --- sudo-1.6.8p12/check.c.getgrouplist 2005-03-25 02:55:31.000000000 +0100 +++ sudo-1.6.8p12/check.c 2007-04-12 10:18:16.000000000 +0200 @@ -299,6 +299,24 @@ return(TRUE); } +#ifdef HAVE_GETGROUPLIST + { + gid_t *grouplist, grouptmp; + int n_groups, i; + n_groups = 1; + if (getgrouplist(user_name, user_gid, &grouptmp, &n_groups) == -1) { + grouplist = (gid_t *) emalloc(sizeof(gid_t) * (n_groups + 1)); + if (getgrouplist(user_name, user_gid, grouplist, &n_groups) > 0) + for (i = 0; i < n_groups; i++) + if (grouplist[i] == grp->gr_gid) { + free(grouplist); + return(TRUE); + } + free(grouplist); + } + } +#endif + return(FALSE); } --- sudo-1.6.8p12/config.h.in.getgrouplist 2007-04-12 10:16:12.000000000 +0200 +++ sudo-1.6.8p12/config.h.in 2007-04-12 10:18:16.000000000 +0200 @@ -122,6 +122,9 @@ /* Define to 1 if you have the `getdomainname' function. */ #undef HAVE_GETDOMAINNAME +/* Define to 1 if you have the `getgrouplist' function. */ +#undef HAVE_GETGROUPLIST + /* Define to 1 if you have the `getifaddrs' function. */ #undef HAVE_GETIFADDRS