diff options
author | Corinna Vinschen <corinna@vinschen.de> | 2014-02-10 20:16:55 +0000 |
---|---|---|
committer | Corinna Vinschen <corinna@vinschen.de> | 2014-02-10 20:16:55 +0000 |
commit | b0244c497bf91e7108aa76093f402d0fe0888b0a (patch) | |
tree | ec2785830aa324bb51b60a86d7176eef60f34219 /winsup/cygwin/uinfo.cc | |
parent | ebb09f85e1117962f32bbe638f71b6196d6a7b8d (diff) | |
download | cygnal-b0244c497bf91e7108aa76093f402d0fe0888b0a.tar.gz cygnal-b0244c497bf91e7108aa76093f402d0fe0888b0a.tar.bz2 cygnal-b0244c497bf91e7108aa76093f402d0fe0888b0a.zip |
* uinfo.cc (cygheap_domain_info::init): Fix handling of account domain
on donmain controllers. Explain why.
Diffstat (limited to 'winsup/cygwin/uinfo.cc')
-rw-r--r-- | winsup/cygwin/uinfo.cc | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/winsup/cygwin/uinfo.cc b/winsup/cygwin/uinfo.cc index e209cc66c..1e54d3956 100644 --- a/winsup/cygwin/uinfo.cc +++ b/winsup/cygwin/uinfo.cc @@ -745,9 +745,13 @@ cygheap_domain_info::init () system_printf ("LsaQueryInformationPolicy(Account) %u", status); return false; } - /* Copy account domain info to cygheap. */ - adom_name = cwcsdup (adom->DomainName.Buffer); + /* Copy account domain info to cygheap. If we're running on a DC the account + domain is identical to the primary domain. This leads to confusion when + trying to compute the uid/gid values. Therefore we invalidate the account + domain name if we're running on a DC. */ adom_sid = adom->DomainSid; + if (pdom_sid == adom_sid) + adom_name = cwcsdup (pdom_sid == adom_sid ? L"@" : adom->DomainName.Buffer); LsaFreeMemory (adom); lsa_close_policy (lsa); if (cygheap->dom.member_machine ()) |