Fix for bug #703, try lowercase netgroups lookups.
authorJeremy Allison <jra@samba.org>
Tue, 4 Nov 2003 18:24:30 +0000 (18:24 +0000)
committerJeremy Allison <jra@samba.org>
Tue, 4 Nov 2003 18:24:30 +0000 (18:24 +0000)
Jeremy.
(This used to be commit b7ce6294bbff9ef82b34d900fe836ff2e3c5abe1)

source3/lib/username.c

index 6321d4702127b402cd1d8af5c5bfdf6c50e689a6..40327f81687d013ea7b4936bd45e7f9068a03daa 100644 (file)
@@ -293,13 +293,16 @@ struct passwd *Get_Pwnam(const char *user)
 }
 
 /****************************************************************************
- Check if a user is in a netgroup user list.
+ Check if a user is in a netgroup user list. If at first we don't succeed,
+ try lower case.
 ****************************************************************************/
 
 static BOOL user_in_netgroup_list(const char *user, const char *ngname)
 {
 #ifdef HAVE_NETGROUP
        static char *mydomain = NULL;
+       fstring lowercase_user, lowercase_ngname;
+
        if (mydomain == NULL)
                yp_get_default_domain(&mydomain);
 
@@ -315,6 +318,20 @@ static BOOL user_in_netgroup_list(const char *user, const char *ngname)
 
        if (innetgr(ngname, NULL, user, mydomain))
                return (True);
+
+       /*
+        * Ok, innetgr is case sensitive. Try once more with lowercase
+        * just in case. Attempt to fix #703. JRA.
+        */
+
+       fstrcpy(lowercase_user, user);
+       strlower_m(lowercase_user);
+       fstrcpy(lowercase_ngname, ngname);
+       strlower_m(lowercase_ngname);
+       
+       if (innetgr(lowercase_ngname, NULL, lowercase_user, mydomain))
+               return (True);
+
 #endif /* HAVE_NETGROUP */
        return False;
 }