Change internal gid datatype from __gid16_t to __gid32_t
throughout. * cygwin.din: Export new symbols chown32, fchown32, getegid32, getgid32, getgrgid32, getgrnam32, getgroups32, initgroups32, lchown32, setgid32, setegid32, getgrent32. * grp.cc (grp32togrp16): New static function. (getgrgid32): New function. (getgrnam32): Ditto. (getgrent32): Ditto. (getgroups32): Change name of internal function from getgroups. (getgroups32): New function. (initgroups32): Ditto. * syscalls.cc (chown32): Ditto. (lchown32): Ditto. (fchown32): Ditto. (setegid32): Ditto. (setgid32): Ditto. * uinfo.cc (getgid32): Ditto. (getegid32): Ditto. * include/cygwin/grp.h: Remove declaration of getgrgid() and getgrnam(). Declare getgrgid32() and getgrnam32() instead. Declare getgid32().
This commit is contained in:
@ -127,7 +127,7 @@ cygsid::getfrompw (const struct passwd *pw)
|
||||
}
|
||||
|
||||
BOOL
|
||||
cygsid::getfromgr (const struct __group16 *gr)
|
||||
cygsid::getfromgr (const struct __group32 *gr)
|
||||
{
|
||||
char *sp = (gr && gr->gr_passwd) ? gr->gr_passwd : NULL;
|
||||
return (*this = sp ?: "") != NULL;
|
||||
@ -174,7 +174,7 @@ cygsid::get_id (BOOL search_grp, int *type)
|
||||
}
|
||||
if (search_grp || type)
|
||||
{
|
||||
struct __group16 *gr;
|
||||
struct __group32 *gr;
|
||||
for (int gidx = 0; (gr = internal_getgrent (gidx)); ++gidx)
|
||||
{
|
||||
if (sid.getfromgr (gr) && sid == psid)
|
||||
@ -224,7 +224,7 @@ cygsid::get_id (BOOL search_grp, int *type)
|
||||
*type = GROUP;
|
||||
if (id == -1)
|
||||
{
|
||||
struct __group16 *gr = getgrnam (account);
|
||||
struct __group32 *gr = getgrnam32 (account);
|
||||
if (gr)
|
||||
id = gr->gr_gid;
|
||||
}
|
||||
@ -249,16 +249,16 @@ cygsid::get_id (BOOL search_grp, int *type)
|
||||
}
|
||||
|
||||
BOOL
|
||||
is_grp_member (__uid16_t uid, __gid16_t gid)
|
||||
is_grp_member (__uid32_t uid, __gid32_t gid)
|
||||
{
|
||||
extern int getgroups (int, __gid16_t *, __gid16_t, const char *);
|
||||
extern int getgroups32 (int, __gid32_t *, __gid32_t, const char *);
|
||||
BOOL grp_member = TRUE;
|
||||
|
||||
struct passwd *pw = getpwuid (uid);
|
||||
__gid16_t grps[NGROUPS_MAX];
|
||||
int cnt = getgroups (NGROUPS_MAX, grps,
|
||||
pw ? pw->pw_gid : myself->gid,
|
||||
pw ? pw->pw_name : cygheap->user.name ());
|
||||
__gid32_t grps[NGROUPS_MAX];
|
||||
int cnt = getgroups32 (NGROUPS_MAX, grps,
|
||||
pw ? pw->pw_gid : myself->gid,
|
||||
pw ? pw->pw_name : cygheap->user.name ());
|
||||
int i;
|
||||
for (i = 0; i < cnt; ++i)
|
||||
if (grps[i] == gid)
|
||||
|
Reference in New Issue
Block a user