summaryrefslogtreecommitdiffstats
path: root/source
diff options
context:
space:
mode:
authorJeremy Allison <jra@samba.org>2003-11-04 18:24:33 +0000
committerJeremy Allison <jra@samba.org>2003-11-04 18:24:33 +0000
commit8b06385e008a9433fa6efb941b997f7d6b182a65 (patch)
tree3abdd46a99ecb8f2a5461fb6b4a90ad778d6ded1 /source
parentfc30b6b5473124bad9c2c30b604bc21c9de258c1 (diff)
downloadsamba-8b06385e008a9433fa6efb941b997f7d6b182a65.tar.gz
samba-8b06385e008a9433fa6efb941b997f7d6b182a65.tar.xz
samba-8b06385e008a9433fa6efb941b997f7d6b182a65.zip
Fix for bug #703, try lowercase netgroups lookups.
Jeremy.
Diffstat (limited to 'source')
-rw-r--r--source/lib/username.c19
1 files changed, 18 insertions, 1 deletions
diff --git a/source/lib/username.c b/source/lib/username.c
index 6321d470212..40327f81687 100644
--- a/source/lib/username.c
+++ b/source/lib/username.c
@@ -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;
}