summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGerald (Jerry) Carter <jerry@samba.org>2008-01-04 13:32:58 -0600
committerGerald (Jerry) Carter <jerry@samba.org>2008-01-04 13:32:58 -0600
commitbcc2a6a9d759adc52ed9176bd1153da4b5a79722 (patch)
treeaf948d56000ecc7c1bb628187a2903f755f58502
parent9a45dcef4d7c0f85d371afb2f7e09ae63bb7ae65 (diff)
downloadsamba-bcc2a6a9d759adc52ed9176bd1153da4b5a79722.tar.gz
samba-bcc2a6a9d759adc52ed9176bd1153da4b5a79722.tar.bz2
samba-bcc2a6a9d759adc52ed9176bd1153da4b5a79722.zip
Ensure that winbindd_getgroups() can deal with a UPN name.
A user logging in via GDM was not getting a complete list of supplementary groups in his/her token. This is because getgroup() was not able to find the winbindd_domain* using the DNS name. Fallback to matching the DNS name is the short name match failes. (This used to be commit 2030a8de19a2c7c735a8aa367dd953e4a5c447b8)
-rw-r--r--source3/winbindd/winbindd_group.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/source3/winbindd/winbindd_group.c b/source3/winbindd/winbindd_group.c
index fbd2fee692..62e8d1c40b 100644
--- a/source3/winbindd/winbindd_group.c
+++ b/source3/winbindd/winbindd_group.c
@@ -1494,9 +1494,18 @@ void winbindd_getgroups(struct winbindd_cli_state *state)
s->username = talloc_strdup( state->mem_ctx, state->request.data.username );
}
- /* Get info for the domain */
+ /* Get info for the domain (either by short domain name or
+ DNS name in the case of a UPN) */
s->domain = find_domain_from_name_noinit(s->domname);
+ if (!s->domain) {
+ char *p = strchr(s->username, '@');
+
+ if (p) {
+ s->domain = find_domain_from_name_noinit(p+1);
+ }
+
+ }
if (s->domain == NULL) {
DEBUG(7, ("could not find domain entry for domain %s\n",