=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/chpass/Attic/pw_yp.c,v retrieving revision 1.4 retrieving revision 1.5 diff -c -r1.4 -r1.5 *** src/usr.bin/chpass/Attic/pw_yp.c 1996/08/31 01:55:33 1.4 --- src/usr.bin/chpass/Attic/pw_yp.c 1996/08/31 13:50:19 1.5 *************** *** 1,4 **** ! /* $OpenBSD: pw_yp.c,v 1.4 1996/08/31 01:55:33 deraadt Exp $ */ /* $NetBSD: pw_yp.c,v 1.5 1995/03/26 04:55:33 glass Exp $ */ /* --- 1,4 ---- ! /* $OpenBSD: pw_yp.c,v 1.5 1996/08/31 13:50:19 deraadt Exp $ */ /* $NetBSD: pw_yp.c,v 1.5 1995/03/26 04:55:33 glass Exp $ */ /* *************** *** 37,43 **** #if 0 static char sccsid[] = "@(#)pw_yp.c 1.0 2/2/93"; #else ! static char rcsid[] = "$OpenBSD: pw_yp.c,v 1.4 1996/08/31 01:55:33 deraadt Exp $"; #endif #endif /* not lint */ --- 37,43 ---- #if 0 static char sccsid[] = "@(#)pw_yp.c 1.0 2/2/93"; #else ! static char rcsid[] = "$OpenBSD: pw_yp.c,v 1.5 1996/08/31 13:50:19 deraadt Exp $"; #endif #endif /* not lint */ *************** *** 65,72 **** uid_t uid; { char *master; ! char *pp; ! int r, rpcport, status; struct yppasswd yppasswd; struct timeval tv; CLIENT *client; --- 65,73 ---- uid_t uid; { char *master; ! char *pp, *p; ! char buf[10]; ! int r, rpcport, status, alen; struct yppasswd yppasswd; struct timeval tv; CLIENT *client; *************** *** 123,128 **** --- 124,141 ---- return(0); } + for (alen = 0, p = pw->pw_gecos; *p; p++) + if (*p == '&') + alen = alen + strlen(pw->pw_name) - 1; + if (strlen(pw->pw_name) + 1 + strlen(pw->pw_passwd) + 1 + + strlen((sprintf(buf, "%d", pw->pw_uid), buf)) + 1 + + strlen((sprintf(buf, "%d", pw->pw_gid), buf)) + 1 + + strlen(pw->pw_gecos) + alen + 1 + strlen(pw->pw_dir) + 1 + + strlen(pw->pw_shell) >= 1023) { + warnx("entries too long"); + return (0); + } + /* tell rpc.yppasswdd */ yppasswd.newpw.pw_name = pw->pw_name; yppasswd.newpw.pw_passwd= pw->pw_passwd; *************** *** 131,137 **** yppasswd.newpw.pw_gecos = pw->pw_gecos; yppasswd.newpw.pw_dir = pw->pw_dir; yppasswd.newpw.pw_shell = pw->pw_shell; ! client = clnt_create(master, YPPASSWDPROG, YPPASSWDVERS, "udp"); if (client==NULL) { fprintf(stderr, "can't contact yppasswdd on %s: Reason: %s\n", --- 144,150 ---- yppasswd.newpw.pw_gecos = pw->pw_gecos; yppasswd.newpw.pw_dir = pw->pw_dir; yppasswd.newpw.pw_shell = pw->pw_shell; ! client = clnt_create(master, YPPASSWDPROG, YPPASSWDVERS, "udp"); if (client==NULL) { fprintf(stderr, "can't contact yppasswdd on %s: Reason: %s\n",