summaryrefslogtreecommitdiff
path: root/source3/lib/username.c
diff options
context:
space:
mode:
authorJeremy Allison <jra@samba.org>2003-11-04 18:24:30 +0000
committerJeremy Allison <jra@samba.org>2003-11-04 18:24:30 +0000
commit7b64564fbeb32d4b1cd0f01c3cdb35953c9c4cff (patch)
tree64f9306822855bd4dfca856379315a8128966a1d /source3/lib/username.c
parent3d7fe188813371e2683dc0e47a4a3e14aaf61194 (diff)
downloadsamba-7b64564fbeb32d4b1cd0f01c3cdb35953c9c4cff.tar.gz
samba-7b64564fbeb32d4b1cd0f01c3cdb35953c9c4cff.tar.bz2
samba-7b64564fbeb32d4b1cd0f01c3cdb35953c9c4cff.zip
Fix for bug #703, try lowercase netgroups lookups.
Jeremy. (This used to be commit b7ce6294bbff9ef82b34d900fe836ff2e3c5abe1)
Diffstat (limited to 'source3/lib/username.c')
-rw-r--r--source3/lib/username.c19
1 files changed, 18 insertions, 1 deletions
diff --git a/source3/lib/username.c b/source3/lib/username.c
index 6321d47021..40327f8168 100644
--- a/source3/lib/username.c
+++ b/source3/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;
}