diff options
author | Jeremy Allison <jra@samba.org> | 2000-10-11 03:46:12 +0000 |
---|---|---|
committer | Jeremy Allison <jra@samba.org> | 2000-10-11 03:46:12 +0000 |
commit | 858cbcaf8e87cae3fb91facc7df5a010a1cb28a5 (patch) | |
tree | 05a47362a980e75c6459b857eeac76ba90deb39f | |
parent | 6f31b59d5008f40ddac91dd8fd49e76b181a05fa (diff) | |
download | samba-858cbcaf8e87cae3fb91facc7df5a010a1cb28a5.tar.gz samba-858cbcaf8e87cae3fb91facc7df5a010a1cb28a5.tar.xz samba-858cbcaf8e87cae3fb91facc7df5a010a1cb28a5.zip |
Fix to avoid calling getgrgid for no reason.
Jeremy.
-rw-r--r-- | source/lib/username.c | 30 |
1 files changed, 9 insertions, 21 deletions
diff --git a/source/lib/username.c b/source/lib/username.c index 99bee8a2172..7baf3618b93 100644 --- a/source/lib/username.c +++ b/source/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); - } - - 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++; + + if ((gptr = (struct group *)getgrnam(gname)) == NULL) + return False; + + member = gptr->gr_mem; + while (member && *member) { + if (strequal(*member,user)) { + return(True); } + member++; } - endgrent(); -#endif /* HAVE_GETGRNAM */ return False; } |