diff options
author | Gerald (Jerry) Carter <jerry@samba.org> | 2008-01-04 13:32:58 -0600 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2008-01-04 13:32:58 -0600 |
commit | bcc2a6a9d759adc52ed9176bd1153da4b5a79722 (patch) | |
tree | af948d56000ecc7c1bb628187a2903f755f58502 | |
parent | 9a45dcef4d7c0f85d371afb2f7e09ae63bb7ae65 (diff) | |
download | samba-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.c | 11 |
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", |