Cygwin: load_user_profile: Don't give primary domain to ldap

If the user domain is the primary domain, LDAP is supposed to
use the default naming context.  This is accomplished by setting
domain name to NULL in the call to cyg_ldap::fetch_ad_account.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
This commit is contained in:
Corinna Vinschen 2019-03-02 12:47:54 +01:00
parent 6c86b85f4e
commit 4abac62193
1 changed files with 7 additions and 14 deletions

View File

@ -285,9 +285,7 @@ load_user_profile (HANDLE token, struct passwd *pw, cygpsid &usersid)
PCWSTR dnsdomain = NULL; PCWSTR dnsdomain = NULL;
debug_printf ("primary domain <%W>", cygheap->dom.primary_flat_name ()); debug_printf ("primary domain <%W>", cygheap->dom.primary_flat_name ());
if (!wcscasecmp (domain, cygheap->dom.primary_flat_name ())) if (wcscasecmp (domain, cygheap->dom.primary_flat_name ()))
dnsdomain = cygheap->dom.primary_dns_name ();
else
{ {
PDS_DOMAIN_TRUSTSW td = NULL; PDS_DOMAIN_TRUSTSW td = NULL;
@ -301,21 +299,16 @@ load_user_profile (HANDLE token, struct passwd *pw, cygpsid &usersid)
} }
} }
} }
if (dnsdomain) if (cldap.fetch_ad_account (usersid, false, dnsdomain))
{ {
if (cldap.fetch_ad_account (usersid, false, dnsdomain)) PWCHAR val = cldap.get_profile_path ();
if (val && *val)
{ {
PWCHAR val = cldap.get_profile_path (); wcsncpy (userpath, val, MAX_PATH - 1);
if (val && *val) userpath[MAX_PATH - 1] = L'\0';
{ pi.lpProfilePath = userpath;
wcsncpy (userpath, val, MAX_PATH - 1);
userpath[MAX_PATH - 1] = L'\0';
pi.lpProfilePath = userpath;
}
} }
} }
else
debug_printf ("Unknown domain <%W>?", domain);
} }
if (!LoadUserProfileW (token, &pi)) if (!LoadUserProfileW (token, &pi))