]> granicus.if.org Git - sudo/commitdiff
Use supplementary group vector in struct sudo_user.
authorTodd C. Miller <Todd.Miller@courtesan.com>
Tue, 16 Nov 2004 23:55:26 +0000 (23:55 +0000)
committerTodd C. Miller <Todd.Miller@courtesan.com>
Tue, 16 Nov 2004 23:55:26 +0000 (23:55 +0000)
ldap.c

diff --git a/ldap.c b/ldap.c
index 2f30209bde469b0d210b7d2ea2764b587102a596..b07cc5ed68899b6d0bab02faecfe2b786ffca430 100644 (file)
--- a/ldap.c
+++ b/ldap.c
@@ -424,8 +424,6 @@ char *
 sudo_ldap_build_pass1()
 {
   struct group *grp;
-  gid_t *grplist=NULL;
-  int ngrps;
   int i;
 
   char *b=NULL;
@@ -447,20 +445,15 @@ sudo_ldap_build_pass1()
     ncat(&b,&sz,")");
   }
 
-  /* handle arbitrary number of groups */
-  if (0<(ngrps=getgroups(0,NULL))){
-    grplist=calloc(ngrps,sizeof(gid_t));
-    if (grplist!=NULL && (0<getgroups(ngrps,grplist)))
-      for(i=0;i<ngrps;i++){
-        if((grp=sudo_getgrgid(grplist[i]))!=NULL){
-          ncat(&b,&sz,"(sudoUser=%");
-          ncat(&b,&sz,grp->gr_name);
-          ncat(&b,&sz,")");
-        }
-      }
+  /* Append supplementary groups */
+  for(i=0;i<user_ngroups;i++){
+    if((grp=sudo_getgrgid(user_groups[i]))!=NULL){
+      ncat(&b,&sz,"(sudoUser=%");
+      ncat(&b,&sz,grp->gr_name);
+      ncat(&b,&sz,")");
+    }
   }
 
-
   /* Add ALL to list */
   ncat(&b,&sz,"(sudoUser=ALL)");