Gerald Carter wrote:
On Tue, 14 May 2002, Torbjorn Olofsson wrote:

  
On Sat, 11 May 2002, Travis Freeland wrote:

      
In order to get samba 2.2.4 working correctly under solaris (where we
rely heavily on NIS unix groups) I had to make a couple of changes to
username.c (basically take it back to the 2.0 style unix group checking
code .. and take out the winbind group check which was failing because
we dont run winbind).
        

Travis,  Can you send me the diff?  I would like to take a look at it.
  
Sure.. here tis..

travis@rana:03:07:01:/tmp/samba-2.2.4/source/lib
$ diff username.c ~/samba-2.2.4/source/lib/username.c
385,416c385,407
<       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", use
r, gname));
<
<       /*
<        * We need to check the users primary group as this
<        * group is implicit and often not listed in the group database.
<        */
<
<       if (pass) {
<               if (strequal(gname, gidtoname(pass->pw_gid))) {
<                       DEBUG(10,("user_in_unix_group_list: group %s is primary
group.\n", gname ));
<                       return True;
<               }
<       }
<
<       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;
<       }
<
<       for (member = user_list; member; member = member->next) {
<               DEBUG(10,("user_in_unix_group_list: checking user %s against mem
ber %s\n",
<                       user, member->unix_name ));
<               if (strequal(member->unix_name,user)) {
<                       free_userlist(user_list);
<                       return(True);
<               }
<       }
---
>         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);
>         }
>
>         setgrent();
>         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++;
>                 }
>         }
418,419c409,410
<       free_userlist(user_list);
<       return False;
---
>         endgrent();
>         return False;
431,433c422
<       ret = user_in_winbind_group_list(user, gname, &winbind_answered);
<       if (!winbind_answered)
<               ret = user_in_unix_group_list(user, gname);
---
>       ret = user_in_unix_group_list(user, gname);

Travis



cheers, jerry
 ---------------------------------------------------------------------
 Hewlett-Packard                                     http://www.hp.com
 SAMBA Team                                       http://www.samba.org
 --                                            http://www.plainjoe.org
 "Sam's Teach Yourself Samba in 24 Hours" 2ed.      ISBN 0-672-32269-2
 --"I never saved anything for the swim back." Ethan Hawk in Gattaca--


  


Reply via email to