From 9c35021cd64f282e86466d6a517e3f3fd1a6c43a Mon Sep 17 00:00:00 2001 From: Andrew Deason Date: Wed, 11 Nov 2009 11:23:49 -0600 Subject: [PATCH] Make ktc_curpag also detect ONEGROUP PAG gids ktc_curpag falls back to looking at the group list if the VIOC_GETPAG pioctl fails. If we're in AFS_LINUX26_ONEGROUP_ENV in the kernel, though, ktc_curpag still looks for two groups, instead of the one combined group. Add a check for the big one group in the fallback if we're on LINUX26. Reviewed-on: http://gerrit.openafs.org/815 Tested-by: Andrew Deason Reviewed-by: Marc Dionne Reviewed-by: Derrick Brashear (cherry picked from commit c53abbb3e8d14643f3f82999cbe24fb12d358ce0) Change-Id: I771d90546b1aec9f3e84a56a5b6a465e18b1241a Reviewed-on: http://gerrit.openafs.org/853 Tested-by: Andrew Deason Reviewed-by: Derrick Brashear --- src/auth/ktc.c | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/auth/ktc.c b/src/auth/ktc.c index bcb8402e4..f1c236a18 100644 --- a/src/auth/ktc.c +++ b/src/auth/ktc.c @@ -946,8 +946,21 @@ ktc_curpag(void) gid_t groups[NGROUPS_MAX]; afs_uint32 g0, g1; afs_uint32 h, l, ret; + int ngroups; + int i; + + ngroups = getgroups(sizeof groups / sizeof groups[0], groups); + +#ifdef AFS_LINUX26_ENV + /* check for AFS_LINUX26_ONEGROUP_ENV PAGs */ + for (i = 0; i < ngroups; i++) { + if (((groups[i] >> 24) & 0xff) == 'A') { + return groups[i]; + } + } +#endif - if (getgroups(sizeof groups / sizeof groups[0], groups) < 2) + if (ngroups < 2) return 0; g0 = groups[0] & 0xffff; -- 2.39.5