Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. =================================================================== RCS file: /ftp/cvs/cvsroot/src/lib/libc/gen/getpwent.c,v rcsdiff: /ftp/cvs/cvsroot/src/lib/libc/gen/getpwent.c,v: warning: Unknown phrases like `commitid ...;' are present. retrieving revision 1.46.4.4 retrieving revision 1.47 diff -u -p -r1.46.4.4 -r1.47 --- src/lib/libc/gen/getpwent.c 2002/04/17 11:46:02 1.46.4.4 +++ src/lib/libc/gen/getpwent.c 2000/10/02 19:25:32 1.47 @@ -1,4 +1,4 @@ -/* $NetBSD: getpwent.c,v 1.46.4.4 2002/04/17 11:46:02 he Exp $ */ +/* $NetBSD: getpwent.c,v 1.47 2000/10/02 19:25:32 simonb Exp $ */ /* * Copyright (c) 1988, 1993 @@ -39,7 +39,7 @@ #if 0 static char sccsid[] = "@(#)getpwent.c 8.2 (Berkeley) 4/27/95"; #else -__RCSID("$NetBSD: getpwent.c,v 1.46.4.4 2002/04/17 11:46:02 he Exp $"); +__RCSID("$NetBSD: getpwent.c,v 1.47 2000/10/02 19:25:32 simonb Exp $"); #endif #endif /* LIBC_SCCS and not lint */ @@ -376,8 +376,9 @@ __pwparse(pw, s) if (yp_match(__ypdomain, "passwd.adjunct.byname", pw->pw_name, (int)strlen(pw->pw_name), &data, &datalen) == 0) { - strlcpy(adjunctpw, data, MIN((size_t)datalen, - sizeof(adjunctpw))); + if (datalen > sizeof(adjunctpw) - 1) + datalen = sizeof(adjunctpw) - 1; + strncpy(adjunctpw, data, (size_t)datalen); /* skip name to get password */ if ((bp = strsep(&data, ":")) != NULL && @@ -405,8 +406,7 @@ _local_getpw(rv, cb_data, ap) DBT key; char bf[/*CONSTCOND*/ MAX(MAXLOGNAME, sizeof(_pw_keynum)) + 1]; uid_t uid; - size_t len; - int search, rval; + int search, len, rval; const char *name; if (!_pw_db && !__initdb()) @@ -425,14 +425,12 @@ _local_getpw(rv, cb_data, ap) case _PW_KEYBYNAME: name = va_arg(ap, const char *); len = strlen(name); - if (len > MAXLOGNAME) - return NS_NOTFOUND; - memmove(bf + 1, name, len); + memmove(bf + 1, name, (size_t)MIN(len, MAXLOGNAME)); key.size = len + 1; break; case _PW_KEYBYUID: uid = va_arg(ap, uid_t); - memmove(bf + 1, &uid, sizeof(uid)); + memmove(bf + 1, &uid, sizeof(len)); key.size = sizeof(uid) + 1; break; default: @@ -1193,7 +1191,6 @@ __hashpw(key) if ((buf = realloc(buf, max)) == NULL) { if (oldbuf != NULL) free(oldbuf); - max = 0; return NS_UNAVAIL; } }