rb_group_member: Simplify
This commit is contained in:
parent
9a3333986f
commit
8f480eafab
Notes:
git
2021-10-14 00:20:41 +09:00
24
file.c
24
file.c
@ -1451,7 +1451,7 @@ rb_group_member(GETGROUPS_T gid)
|
|||||||
return FALSE;
|
return FALSE;
|
||||||
#else
|
#else
|
||||||
int rv = FALSE;
|
int rv = FALSE;
|
||||||
int groups = 16;
|
int groups;
|
||||||
VALUE v = 0;
|
VALUE v = 0;
|
||||||
GETGROUPS_T *gary;
|
GETGROUPS_T *gary;
|
||||||
int anum = -1;
|
int anum = -1;
|
||||||
@ -1459,25 +1459,9 @@ rb_group_member(GETGROUPS_T gid)
|
|||||||
if (getgid() == gid || getegid() == gid)
|
if (getgid() == gid || getegid() == gid)
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
|
||||||
/*
|
groups = getgroups(0, NULL);
|
||||||
* On Mac OS X (Mountain Lion), NGROUPS is 16. But libc and kernel
|
gary = ALLOCV_N(GETGROUPS_T, v, groups);
|
||||||
* accept more larger value.
|
anum = getgroups(groups, gary);
|
||||||
* So we don't trunk NGROUPS anymore.
|
|
||||||
*/
|
|
||||||
while (groups <= RB_MAX_GROUPS) {
|
|
||||||
gary = ALLOCV_N(GETGROUPS_T, v, groups);
|
|
||||||
anum = getgroups(groups, gary);
|
|
||||||
if (anum != -1 && anum != groups)
|
|
||||||
break;
|
|
||||||
groups *= 2;
|
|
||||||
if (v) {
|
|
||||||
ALLOCV_END(v);
|
|
||||||
v = 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (anum == -1)
|
|
||||||
return FALSE;
|
|
||||||
|
|
||||||
while (--anum >= 0) {
|
while (--anum >= 0) {
|
||||||
if (gary[anum] == gid) {
|
if (gary[anum] == gid) {
|
||||||
rv = TRUE;
|
rv = TRUE;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user