Comrite Unix Man page/Perldoc/Info page, English-Chinese Dictionary, Chinese-English Dictionary

getgrouplist

Command: man perldoc info search(apropos)  


 
GETGROUPLIST(2)            Linux Programmer's Manual           GETGROUPLIST(2)



NAME
       getgrouplist -  list of groups a user belongs to

SYNOPSIS
       #include <grp.h>

       int getgrouplist (const char *user, gid_t group,
                         gid_t *groups, int *ngroups);

DESCRIPTION
       The getgrouplist() function scans the group database for all the groups
       user belongs to.  Up to  *ngroups  group  IDs  corresponding  to  these
       groups  are stored in the array groups; the return value from the func-
       tion is the number of group IDs actually stored.  The  group  group  is
       automatically  included  in  the  list  of groups returned by getgroup-
       list().

RETURN VALUE
       If *ngroups is smaller than the total number of groups found, then get-
       grouplist() returns a value of `-1'.  In all cases the actual number of
       groups is stored in *ngroups.

BUGS
       The glibc 2.3.2 implementation of this function  is  broken:  it  over-
       writes memory when the actual number of groups is larger than *ngroups.

CONFORMING TO
       This function is present since glibc 2.2.4.

EXAMPLE
       /* This crashes with glibc 2.3.2 */
       #include <stdio.h>
       #include <stdlib.h>
       #include <grp.h>
       #include <pwd.h>

       int main() {
               int i, ng = 0;
               char *user = "who";   /* username here */
               gid_t *groups = NULL;
               struct passwd *pw = getpwnam(user);
               if (pw == NULL)
                       return 0;

               if (getgrouplist(user, pw->pw_gid, NULL, &ng) < 0) {
                       groups = (gid_t *) malloc(ng * sizeof (gid_t));
                       getgrouplist(user, pw->pw_gid, groups, &ng);
               }

               for(i = 0; i < ng; i++)
                       printf("%d\n", groups[i]);

               return 0;
       }

SEE ALSO
       getgroups(3), setgroups(3)



GNU                               2003-11-18                   GETGROUPLIST(2)
 

©2005 Comrite