aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCorinna Vinschen <corinna@vinschen.de>2024-02-20 23:54:25 +0100
committerCorinna Vinschen <corinna@vinschen.de>2024-02-26 10:04:32 +0100
commit69aba646123cef13a6aa9dbec175f1e22357df2e (patch)
tree3be26408978ef0e60225868695767fa2f295bfdc
parent50240f20ecfc7bc7a2961c25f96f5b9345c984ac (diff)
downloadnewlib-69aba646123cef13a6aa9dbec175f1e22357df2e.zip
newlib-69aba646123cef13a6aa9dbec175f1e22357df2e.tar.gz
newlib-69aba646123cef13a6aa9dbec175f1e22357df2e.tar.bz2
Cygwin: getgrent/getpwent: avoid local enumeration on DCs
...if we're supposed to enumerate the AD accounts anyway. This avoids some useless duplication. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
-rw-r--r--winsup/cygwin/passwd.cc5
1 files changed, 5 insertions, 0 deletions
diff --git a/winsup/cygwin/passwd.cc b/winsup/cygwin/passwd.cc
index 0be8aa6..b8457a4 100644
--- a/winsup/cygwin/passwd.cc
+++ b/winsup/cygwin/passwd.cc
@@ -385,6 +385,11 @@ pg_ent::getent (void)
case from_local:
if (from_db
&& nss_db_enum_local ()
+ /* Domain controller? If so, sam and ad are one and the same
+ and "local ad" would list all domain accounts twice without
+ this test. */
+ && (cygheap->dom.account_flat_name ()[0] != L'@'
+ || !nss_db_enum_primary ())
&& (entry = enumerate_local ()))
return entry;
state = from_sam;