62 lines
2.0 KiB
Diff
62 lines
2.0 KiB
Diff
|
--- sudo-1.6.9p4/configure.in.getgrouplist 2007-08-20 11:41:32.000000000 +0200
|
||
|
+++ sudo-1.6.9p4/configure.in 2007-08-20 13:24:30.000000000 +0200
|
||
|
@@ -1677,7 +1677,7 @@
|
||
|
dnl
|
||
|
AC_CHECK_FUNCS(strchr strrchr memchr memcpy memset sysconf tzset \
|
||
|
strftime setrlimit initgroups getgroups fstat gettimeofday \
|
||
|
- setlocale getaddrinfo)
|
||
|
+ setlocale getaddrinfo getgrouplist)
|
||
|
if test -z "$SKIP_SETRESUID"; then
|
||
|
AC_CHECK_FUNCS(setresuid, [SKIP_SETREUID=yes])
|
||
|
fi
|
||
|
--- sudo-1.6.9p4/configure.getgrouplist 2007-08-15 15:23:44.000000000 +0200
|
||
|
+++ sudo-1.6.9p4/configure 2007-08-20 13:26:25.000000000 +0200
|
||
|
@@ -14235,7 +14235,7 @@
|
||
|
|
||
|
for ac_func in strchr strrchr memchr memcpy memset sysconf tzset \
|
||
|
strftime setrlimit initgroups getgroups fstat gettimeofday \
|
||
|
- setlocale getaddrinfo
|
||
|
+ setlocale getaddrinfo getgrouplist
|
||
|
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.9p4/check.c.getgrouplist 2007-07-06 21:52:13.000000000 +0200
|
||
|
+++ sudo-1.6.9p4/check.c 2007-08-20 13:21:10.000000000 +0200
|
||
|
@@ -308,6 +308,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.9p4/config.h.in.getgrouplist 2007-08-20 11:41:32.000000000 +0200
|
||
|
+++ sudo-1.6.9p4/config.h.in 2007-08-20 13:21:10.000000000 +0200
|
||
|
@@ -140,6 +140,9 @@
|
||
|
/* Define to 1 if you have the `getgroups' function. */
|
||
|
#undef HAVE_GETGROUPS
|
||
|
|
||
|
+/* Define to 1 if you have the `getgrouplist' function. */
|
||
|
+#undef HAVE_GETGROUPLIST
|
||
|
+
|
||
|
/* Define to 1 if you have the `getifaddrs' function. */
|
||
|
#undef HAVE_GETIFADDRS
|
||
|
|