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 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)
GNU 2003-11-18 GETGROUPLIST(2)
Generated by $Id: phpMan.php,v 4.55 2007/09/05 04:42:51 chedong Exp $ Author: Che Dong
On Apache/1.3.41 (Unix) PHP/5.2.5 mod_perl/1.30 mod_gzip/1.3.26.1a
Under GNU General Public License
2009-01-09 06:18 @38.103.63.58 CrawledBy CCBot/1.0 (+http://www.commoncrawl.org/bot.html)