diff --git a/source3/lib/username.c b/source3/lib/username.c index 99bee8a2172..7baf3618b93 100644 --- a/source3/lib/username.c +++ b/source3/lib/username.c @@ -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; }