commit:     66b10cf352d69a96824cba2c2a2bdea8e8094d7b
Author:     Sergei Trofimovich <slyfox <AT> gentoo <DOT> org>
AuthorDate: Mon Nov 13 23:23:10 2017 +0000
Commit:     Sergei Trofimovich <slyfox <AT> gentoo <DOT> org>
CommitDate: Mon Nov 13 23:25:59 2017 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=66b10cf3

sys-libs/glibc: guard against rendering system unusable, bug #627338

For cases like FEATURES=config-protect-if-modified
or custom /etc/nsswitch.conf with only 'compat' resolver
and external providers glibc upgrade will break local
user resolution when switching from older glibc.

Bad /etc/nsswitch.conf:
    passwd:      compat
    shadow:      compat
    group:       compat

Good /etc/nsswitch.conf:
    passwd:      files
    shadow:      files
    group:       files

Ok /etc/nsswitch.conf:
    passwd:     compat files
    shadow:     compat files
    group:      compat files

More up-to-date doc:
    https://wiki.gentoo.org/wiki/Project:Toolchain/nsswitch.conf_in_glibc-2.26

Bug: https://bugs.gentoo.org/627338
Package-Manager: Portage-2.3.13, Repoman-2.3.4

 sys-libs/glibc/glibc-2.26-r3.ebuild | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/sys-libs/glibc/glibc-2.26-r3.ebuild 
b/sys-libs/glibc/glibc-2.26-r3.ebuild
index 2234b26a084..98ab050e12f 100644
--- a/sys-libs/glibc/glibc-2.26-r3.ebuild
+++ b/sys-libs/glibc/glibc-2.26-r3.ebuild
@@ -189,6 +189,21 @@ pkg_pretend() {
                        die "old __guard detected"
                fi
        fi
+
+       # Check for sanity of /etc/nsswitch.conf
+       if [[ -e ${EROOT}/etc/nsswitch.conf ]] ; then
+               local entry
+               for entry in passwd group shadow; do
+                       if ! egrep -q "[ \t]*${entry}:.*files" 
"${EROOT}"/etc/nsswitch.conf; then
+                               eerror "Your ${EROOT}/etc/nsswitch.conf is out 
of date."
+                               eerror "Please make sure you have 'files' 
entries for"
+                               eerror "'passwd:', 'group:' and 'shadow:' 
databases."
+                               eerror "For more details see:"
+                               eerror "  
https://wiki.gentoo.org/wiki/Project:Toolchain/nsswitch.conf_in_glibc-2.26";
+                               die "nsswitch.conf has no 'files' provider in 
'${entry}'."
+                       fi
+               done
+       fi
 }
 
 src_unpack() {

Reply via email to