mirror of
https://github.com/samba-team/samba.git
synced 2025-03-10 12:58:35 +03:00
Fix to avoid calling getgrgid for no reason.
Jeremy. (This used to be commit b057a7349b2d6420f96a6ebc31822da66b39fe6c)
This commit is contained in:
parent
26a4a34d36
commit
4498212487
@ -265,32 +265,20 @@ static BOOL user_in_netgroup_list(char *user,char *ngname)
|
||||
|
||||
static BOOL user_in_group_list(char *user,char *gname)
|
||||
{
|
||||
#ifdef HAVE_GETGRENT
|
||||
struct group *gptr;
|
||||
char **member;
|
||||
struct passwd *pass = Get_Pwnam(user,False);
|
||||
|
||||
if (pass) {
|
||||
gptr = getgrgid(pass->pw_gid);
|
||||
if (gptr && strequal(gptr->gr_name,gname))
|
||||
return(True);
|
||||
}
|
||||
if ((gptr = (struct group *)getgrnam(gname)) == NULL)
|
||||
return False;
|
||||
|
||||
while ((gptr = (struct group *)getgrent())) {
|
||||
if (!strequal(gptr->gr_name,gname))
|
||||
continue;
|
||||
member = gptr->gr_mem;
|
||||
while (member && *member) {
|
||||
if (strequal(*member,user)) {
|
||||
endgrent();
|
||||
return(True);
|
||||
}
|
||||
member++;
|
||||
member = gptr->gr_mem;
|
||||
while (member && *member) {
|
||||
if (strequal(*member,user)) {
|
||||
return(True);
|
||||
}
|
||||
member++;
|
||||
}
|
||||
|
||||
endgrent();
|
||||
#endif /* HAVE_GETGRNAM */
|
||||
return False;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user