version 1.32, 2015/07/29 00:00:31 |
version 1.33, 2015/07/30 17:04:33 |
|
|
return 0; |
return 0; |
} |
} |
|
|
static gid_t |
static int |
strtogid(const char *s) |
parsegid(const char *s, gid_t *gid) |
{ |
{ |
struct group *gr; |
struct group *gr; |
const char *errstr; |
const char *errstr; |
gid_t gid; |
|
|
|
if ((gr = getgrnam(s)) != NULL) |
if ((gr = getgrnam(s)) != NULL) { |
return gr->gr_gid; |
*gid = gr->gr_gid; |
gid = strtonum(s, 0, GID_MAX, &errstr); |
return 0; |
|
} |
|
*gid = strtonum(s, 0, GID_MAX, &errstr); |
if (errstr) |
if (errstr) |
return -1; |
return -1; |
return gid; |
return 0; |
} |
} |
|
|
static int |
static int |
|
|
int i; |
int i; |
|
|
if (r->ident[0] == ':') { |
if (r->ident[0] == ':') { |
gid_t rgid = strtogid(r->ident + 1); |
gid_t rgid; |
if (rgid == -1) |
if (parsegid(r->ident + 1, &rgid) == -1) |
return 0; |
return 0; |
for (i = 0; i < ngroups; i++) { |
for (i = 0; i < ngroups; i++) { |
if (rgid == groups[i]) |
if (rgid == groups[i]) |