summaryrefslogtreecommitdiffstats
path: root/source/lib/username.c
diff options
context:
space:
mode:
Diffstat (limited to 'source/lib/username.c')
-rw-r--r--source/lib/username.c26
1 files changed, 12 insertions, 14 deletions
diff --git a/source/lib/username.c b/source/lib/username.c
index 517af1bd791..772c0031716 100644
--- a/source/lib/username.c
+++ b/source/lib/username.c
@@ -347,11 +347,11 @@ failed with error %s\n", strerror(errno) ));
Check if a user is in a UNIX group.
****************************************************************************/
-static BOOL user_in_unix_group_list(char *user,char *gname)
+static BOOL user_in_unix_group_list(char *user,const char *gname)
{
- struct group *gptr;
- char **member;
struct passwd *pass = Get_Pwnam(user,False);
+ struct sys_userlist *user_list;
+ struct sys_userlist *member;
DEBUG(10,("user_in_unix_group_list: checking user %s in group %s\n", user, gname));
@@ -367,20 +367,22 @@ static BOOL user_in_unix_group_list(char *user,char *gname)
}
}
- if ((gptr = (struct group *)getgrnam(gname)) == NULL) {
+ user_list = get_users_in_group(gname);
+ if (user_list == NULL) {
DEBUG(10,("user_in_unix_group_list: no such group %s\n", gname ));
return False;
}
-
- member = gptr->gr_mem;
- while (member && *member) {
- DEBUG(10,("user_in_unix_group_list: checking user %s against member %s\n", user, *member ));
- if (strequal(*member,user)) {
+
+ for (member = user_list; member; member = member->next) {
+ DEBUG(10,("user_in_unix_group_list: checking user %s against member %s\n",
+ user, member->unix_name ));
+ if (strequal(member->unix_name,user)) {
+ free_userlist(user_list);
return(True);
}
- member++;
}
+ free_userlist(user_list);
return False;
}
@@ -519,10 +521,6 @@ static struct passwd *uname_string_combinations2(char *s,int offset,struct passw
int i;
struct passwd *ret;
-#ifdef PASSWORD_LENGTH
- len = MIN(len,PASSWORD_LENGTH);
-#endif
-
if (N <= 0 || offset >= len)
return(fn(s));