summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Macek via Cygwin-patches <cygwin-patches@cygwin.com>2020-04-20 19:21:00 +0200
committerCorinna Vinschen <corinna@vinschen.de>2020-04-22 09:32:33 +0200
commit969c8392fe3122af31c288fb88e3ba1942f881d2 (patch)
tree61a9fa34a6b9d505cedab9ba6b9267095a70cb54
parentd5add9ee5e5e6e5dca97bc6061f427407c006de0 (diff)
downloadcygnal-969c8392fe3122af31c288fb88e3ba1942f881d2.tar.gz
cygnal-969c8392fe3122af31c288fb88e3ba1942f881d2.tar.bz2
cygnal-969c8392fe3122af31c288fb88e3ba1942f881d2.zip
Cygwin: accounts: Don't keep old schemes when parsing nsswitch.conf
The implicit assumption seemed to be that any subsequent occurence of the same setting in nsswitch.conf is supposed to rewrite the previous ones completely. This was not the case if the third or any further schema was previously defined and the last line defined less than that (but at least 2), for example: ``` db_home: windows cygwin /myhome/%U db_home: cygwin desc ``` Let's document this behavior as well. Signed-off-by: David Macek <david.macek.0@gmail.com>
-rw-r--r--winsup/cygwin/uinfo.cc7
-rw-r--r--winsup/doc/ntsec.xml5
2 files changed, 8 insertions, 4 deletions
diff --git a/winsup/cygwin/uinfo.cc b/winsup/cygwin/uinfo.cc
index 2d5fc488b..b733a6ee8 100644
--- a/winsup/cygwin/uinfo.cc
+++ b/winsup/cygwin/uinfo.cc
@@ -790,12 +790,12 @@ cygheap_pwdgrp::nss_init_line (const char *line)
scheme = gecos_scheme;
if (scheme)
{
- uint16_t idx = 0;
+ for (uint16_t idx = 0; idx < NSS_SCHEME_MAX; ++idx)
+ scheme[idx].method = NSS_SCHEME_FALLBACK;
- scheme[0].method = scheme[1].method = NSS_SCHEME_FALLBACK;
c = strchr (c, ':') + 1;
c += strspn (c, " \t");
- while (*c && idx < NSS_SCHEME_MAX)
+ for (uint16_t idx = 0; *c && idx < NSS_SCHEME_MAX; ++idx)
{
if (NSS_CMP ("windows"))
scheme[idx].method = NSS_SCHEME_WINDOWS;
@@ -826,7 +826,6 @@ cygheap_pwdgrp::nss_init_line (const char *line)
}
c += strcspn (c, " \t");
c += strspn (c, " \t");
- ++idx;
}
}
}
diff --git a/winsup/doc/ntsec.xml b/winsup/doc/ntsec.xml
index a4c253098..08a33bdc6 100644
--- a/winsup/doc/ntsec.xml
+++ b/winsup/doc/ntsec.xml
@@ -918,6 +918,11 @@ Apart from this restriction, the remainder of the line can have as
many spaces and TABs as you like.
</para>
+<para>
+When the same keyword occurs multiple times, the last one wins, as if the
+previous ones were ignored.
+</para>
+
</sect4>
<sect4 id="ntsec-mapping-nsswitch-pwdgrp"><title id="ntsec-mapping-nsswitch-pwdgrp.title">The <literal>passwd:</literal> and <literal>group:</literal> settings</title>