Flashnux

GNU/Linux man pages

Livre :
Expressions régulières,
Syntaxe et mise en oeuvre :

ISBN : 978-2-7460-9712-4
EAN : 9782746097124
(Editions ENI)

GNU/Linux

CentOS 4.8

i386

getgrouplist(3)


GETGROUPLIST

GETGROUPLIST

NAME
SYNOPSIS
DESCRIPTION
RETURN VALUE
BUGS
CONFORMING TO
EXAMPLE
SEE ALSO

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 getgroup- list().

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)



getgrouplist(3)