--- /dev/null
+commit 780684eb04298977bc411ebca1eadeeba4877833
+Author: Maciej W. Rozycki <macro@mips.com>
+Date: Wed Jun 27 21:12:16 2018 +0100
+
+ nisplus: Correct pwent parsing issue and resulting build error [BZ #23266]
+
+ Copy and null-terminate NIS+ password file UID and GID entries whose
+ length is non-zero and are not terminated, in addition to empty ones,
+ fixing a bug and a compilation issue causing an error with GCC 8:
+
+ nss_nisplus/nisplus-parser.c: In function '_nss_nisplus_parse_pwent':
+ nss_nisplus/nisplus-parser.c:90:7: error: 'strncpy' destination unchanged after copying no bytes [-Werror=stringop-truncation]
+ strncpy (first_unused, numstr, len);
+ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ nss_nisplus/nisplus-parser.c:106:7: error: 'strncpy' destination unchanged after copying no bytes [-Werror=stringop-truncation]
+ strncpy (first_unused, numstr, len);
+ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+ introduced with commit ac05397075f6:
+
+ commit ac05397075f621cfdbe1db527c96167a58b6d18e
+ Author: Ulrich Drepper <drepper@redhat.com>
+ Date: Sun Apr 30 07:01:26 2006 +0000
+
+ * nis/nss_nisplus/nisplus-parser.c: Minor optimizations and
+ cleanups. Avoid copying data if it can be used in the old place.
+
+ (no mailing list reference available). Obviously regardless of the
+ recently added compiler diagnostics causing a build error this code has
+ been long non-functional, so I guess NIS+ servers have been supplying
+ strings that are non-empty and have already been null-terminated.
+ Which in turn made it unnecessary to make a null-terminated copy,
+ masking this bug.
+
+ [BZ #23266]
+ * nis/nss_nisplus/nisplus-parser.c (_nss_nisplus_parse_pwent):
+ Copy and null-terminate entries that are not terminated, in
+ addition to empty ones.
+
+diff --git a/nis/nss_nisplus/nisplus-parser.c b/nis/nss_nisplus/nisplus-parser.c
+index 8dc021e73d..d2b06334c2 100644
+--- a/nis/nss_nisplus/nisplus-parser.c
++++ b/nis/nss_nisplus/nisplus-parser.c
+@@ -82,7 +82,7 @@ _nss_nisplus_parse_pwent (nis_result *result, struct passwd *pw,
+
+ char *numstr = NISOBJVAL (2, obj);
+ len = NISOBJLEN (2, obj);
+- if (len == 0 && numstr[len - 1] != '\0')
++ if (len == 0 || numstr[len - 1] != '\0')
+ {
+ if (len >= room_left)
+ goto no_more_room;
+@@ -98,7 +98,7 @@ _nss_nisplus_parse_pwent (nis_result *result, struct passwd *pw,
+
+ numstr = NISOBJVAL (3, obj);
+ len = NISOBJLEN (3, obj);
+- if (len == 0 && numstr[len - 1] != '\0')
++ if (len == 0 || numstr[len - 1] != '\0')
+ {
+ if (len >= room_left)
+ goto no_more_room;