GETGROUPLIST
Section: Linux Programmer's Manual (3)
Updated: 2003-11-18
Index
Return to Main Contents
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
Index
- NAME
-
- SYNOPSIS
-
- DESCRIPTION
-
- RETURN VALUE
-
- BUGS
-
- CONFORMING TO
-
- EXAMPLE
-
- SEE ALSO
-
This document was created by
man2html,
using the manual pages.
Time: 00:12:37 GMT, May 13, 2005
www.fiveanddime.net