summaryrefslogtreecommitdiffstats
path: root/winsup/cygwin/uinfo.cc
diff options
context:
space:
mode:
authorCorinna Vinschen <corinna@vinschen.de>2014-02-10 20:16:55 +0000
committerCorinna Vinschen <corinna@vinschen.de>2014-02-10 20:16:55 +0000
commitb0244c497bf91e7108aa76093f402d0fe0888b0a (patch)
treeec2785830aa324bb51b60a86d7176eef60f34219 /winsup/cygwin/uinfo.cc
parentebb09f85e1117962f32bbe638f71b6196d6a7b8d (diff)
downloadcygnal-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.cc8
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 ())