Signup
Search Linux manpages For:  

getgrouplist(3) -- Linux man page

 

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 function is the number of group IDs actually stored. The group group is automatically included in the list of groups returned by getgrouplist().  

RETURN VALUE

If *ngroups is smaller than the total number of groups found, then getgrouplist() 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 overwrites 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)


 
LINUX MAN PAGES
Man1 -- User Commands (Intro)
Man2 -- System Calls (Intro)
Man3 -- Library Functions (Intro)
Man4 -- Special Files (Intro)
Man5 -- File Formats (Intro)
Man6 -- Games (Intro)
Man7 -- Miscellaneous (Intro)
Man8 -- Administration (Intro)
Mann -- TCL Functions (not available)


WEB HOSTING SHOWCASE




 
Cheap Web HostingBudget Web HostingEcommerce Web Hosting
Link to UsLink ExchangeAdvertisePrivacy PolicyTerms Of ServiceAbout UsContact UsSitemap
Copyright © 2006 - 2012 Broadband Media, Inc. All rights reserved.