--- /dev/null
+--- yp-tools-2.4/src/yppasswd.c Tue Aug 15 18:48:05 2000
++++ yp-tools-2.4/src/yppasswd.c Tue Aug 15 18:58:45 2000
+@@ -656,6 +656,7 @@
+ {
+ char gecos[1024], *sp, new_gecos[1024];
+ char name[254], location[254], office[254], phone[254];
++ char oname[254], olocation[254], ooffice[254], ophone[254];
+
+ printf (_("\nChanging full name for %s on %s.\n"
+ "To accept the default, simply press return. To enter an empty\n"
+@@ -663,20 +664,20 @@
+ pwd->pw_name, master);
+
+ strncpy (gecos, pwd->pw_gecos, sizeof (gecos));
+- sp = getfield (gecos, name, sizeof (name));
+- if (newfield (progname, _("Name"), strtok (gecos, ","), name,
++ sp = getfield (gecos, oname, sizeof (oname));
++ if (newfield (progname, _("Name"), oname, name,
+ sizeof (name)))
+ return 1;
+- sp = getfield (sp, location, sizeof (location));
+- if (newfield (progname, _("Location"), location, location,
++ sp = getfield (sp, olocation, sizeof (olocation));
++ if (newfield (progname, _("Location"), olocation, location,
+ sizeof (location)))
+ return 1;
+- sp = getfield (sp, office, sizeof (office));
+- if (newfield (progname, _("Office Phone"), office, office,
++ sp = getfield (sp, ooffice, sizeof (ooffice));
++ if (newfield (progname, _("Office Phone"), ooffice, office,
+ sizeof (office)))
+ return 1;
+- sp = getfield (sp, phone, sizeof (phone));
+- if (newfield (progname, _("Home Phone"), phone, phone, sizeof (phone)))
++ sp = getfield (sp, ophone, sizeof (ophone));
++ if (newfield (progname, _("Home Phone"), ophone, phone, sizeof (phone)))
+ return 1;
+ sprintf (new_gecos, "%s,%s,%s,%s", name, location, office, phone);
+ sp = new_gecos + strlen (new_gecos);
--- /dev/null
+--- yp-tools-2.4/man/nicknames.5.in
++++ yp-tools-2.4/man/nicknames.5.in 1999/10/30 11:55:14
+@@ -40,7 +40,7 @@
+ \f3networks.byaddr
+ .TP
+ \f3hosts
+-\f3hosts.byaddr
++\f3hosts.byname
+ .TP
+ \f3protocols
+ \f3protocols.bynumber
+--- yp-tools-2.4/src/yppasswd.c
++++ yp-tools-2.4/src/yppasswd.c 1999/10/30 12:23:41
+@@ -599,7 +599,7 @@
+ int tries = 0;
+ time_t tm;
+
+- buf = (char *) malloc (30);
++ buf = (char *) malloc (129);
+
+ printf (_("Changing NIS password for %s on %s.\n"), pwd->pw_name,
+ master);
+@@ -621,7 +621,8 @@
+ return 1;
+ }
+
+- strcpy (buf, p);
++ strncpy (buf, p, 128);
++ buf[128] = '\0';
+
+ #ifdef USE_CRACKLIB
+ error_msg = FascistCheck (buf, CRACKLIB_DICTPATH);
--- /dev/null
+--- yp-tools-2.4/src/yppasswd.c
++++ yp-tools-2.4/src/yppasswd.c
+@@ -283,8 +283,10 @@
+ return NULL;
+ }
+
+- strncpy (buffer, resp.valdat.valdat_val, resp.valdat.valdat_len);
+- buffer[resp.valdat.valdat_len] = '\0';
++ strncpy (buffer, resp.valdat.valdat_val, sizeof (buffer));
++ buffer[sizeof (buffer) - 1] = '\0';
++ if (resp.valdat.valdat_len < sizeof (buffer))
++ buffer[resp.valdat.valdat_len] = '\0';
+ free (resp.valdat.valdat_val);
+
+ ptr = buffer;