diff options
Diffstat (limited to 'source/winbindd')
-rw-r--r-- | source/winbindd/winbindd_sid.c | 4 | ||||
-rw-r--r-- | source/winbindd/winbindd_util.c | 3 |
2 files changed, 6 insertions, 1 deletions
diff --git a/source/winbindd/winbindd_sid.c b/source/winbindd/winbindd_sid.c index 0e8e6ca00bf..0471a2c52f8 100644 --- a/source/winbindd/winbindd_sid.c +++ b/source/winbindd/winbindd_sid.c @@ -93,6 +93,10 @@ void winbindd_lookupname(struct winbindd_cli_state *state) *p = 0; name_domain = state->request.data.name.name; name_user = p+1; + } else if ((p = strchr(state->request.data.name.name, '@')) != NULL) { + name_domain = p + 1; + *p = 0; + name_user = state->request.data.name.name; } else { name_domain = state->request.data.name.dom_name; name_user = state->request.data.name.name; diff --git a/source/winbindd/winbindd_util.c b/source/winbindd/winbindd_util.c index 624d68e04bf..8046d36ace1 100644 --- a/source/winbindd/winbindd_util.c +++ b/source/winbindd/winbindd_util.c @@ -1102,7 +1102,8 @@ bool parse_domain_user(const char *domuser, fstring domain, fstring user) if ( assume_domain(lp_workgroup())) { fstrcpy(domain, lp_workgroup()); } else if ((p = strchr(domuser, '@')) != NULL) { - fstrcpy(domain, ""); + fstrcpy(domain, p + 1); + user[PTR_DIFF(p, domuser)] = 0; } else { return False; } |