Module Name: src Committed By: dholland Date: Sat Sep 8 15:15:06 UTC 2012
Modified Files: src/lib/libc/gen: getpwent.c Log Message: Revert previous temporary measure and fix the assertion properly instead. To generate a diff of this commit: cvs rdiff -u -r1.80 -r1.81 src/lib/libc/gen/getpwent.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/lib/libc/gen/getpwent.c diff -u src/lib/libc/gen/getpwent.c:1.80 src/lib/libc/gen/getpwent.c:1.81 --- src/lib/libc/gen/getpwent.c:1.80 Fri Sep 7 04:50:35 2012 +++ src/lib/libc/gen/getpwent.c Sat Sep 8 15:15:06 2012 @@ -1,4 +1,4 @@ -/* $NetBSD: getpwent.c,v 1.80 2012/09/07 04:50:35 dholland Exp $ */ +/* $NetBSD: getpwent.c,v 1.81 2012/09/08 15:15:06 dholland Exp $ */ /*- * Copyright (c) 1997-2000, 2004-2005 The NetBSD Foundation, Inc. @@ -88,7 +88,7 @@ #if 0 static char sccsid[] = "@(#)getpwent.c 8.2 (Berkeley) 4/27/95"; #else -__RCSID("$NetBSD: getpwent.c,v 1.80 2012/09/07 04:50:35 dholland Exp $"); +__RCSID("$NetBSD: getpwent.c,v 1.81 2012/09/08 15:15:06 dholland Exp $"); #endif #endif /* LIBC_SCCS and not lint */ @@ -1273,7 +1273,7 @@ _nis_parse(const char *entry, struct pas */ static int _nis_pwscan(int *retval, struct passwd *pw, char *buffer, size_t buflen, - struct nis_state *state, const char * const *map_arr) + struct nis_state *state, const char * const *map_arr, size_t nmaps) { char *data; int nisr, rv, datalen; @@ -1294,7 +1294,8 @@ _nis_pwscan(int *retval, struct passwd * data = NULL; rv = NS_NOTFOUND; - /*_DIAGASSERT(state->maptype > 0 && state->maptype < sizeof(map_arr)/sizeof(const char*));*/ + _DIAGASSERT(state->maptype != NISMAP_UNKNOWN && + (unsigned)state->maptype < nmaps); /* search map */ nisr = yp_match(state->domain, map_arr[state->maptype], buffer, (int)strlen(buffer), @@ -1532,7 +1533,7 @@ _nis_getpwuid(void *nsrv, void *nscb, va snprintf(_nis_passwdbuf, sizeof(_nis_passwdbuf), "%u", (unsigned int)uid); rv = _nis_pwscan(&rerror, &_nis_passwd, _nis_passwdbuf, sizeof(_nis_passwdbuf), - &_nis_state, __nis_pw_u_map); + &_nis_state, __nis_pw_u_map, __arraycount(__nis_pw_u_map)); if (!_nis_state.stayopen) _nis_end(&_nis_state); if (rv == NS_SUCCESS && uid == _nis_passwd.pw_uid) @@ -1565,14 +1566,14 @@ _nis_getpwuid_r(void *nsrv, void *nscb, if (_nis_state.stayopen) { /* use global state only if stayopen is set - otherwise we would blow up getpwent_r() ... */ rv = _nis_pwscan(retval, pw, buffer, buflen, - &_nis_state, __nis_pw_u_map); + &_nis_state, __nis_pw_u_map, __arraycount(__nis_pw_u_map)); } else { /* keep old semantic if no stayopen set - no need to call _nis_start() here - _nis_pwscan() will do it for us ... */ /* use same way as in getgrent.c ... */ memset(&state, 0, sizeof(state)); rv = _nis_pwscan(retval, pw, buffer, buflen, - &state, __nis_pw_u_map); + &state, __nis_pw_u_map, __arraycount(__nis_pw_u_map)); _nis_end(&state); } if (rv != NS_SUCCESS) @@ -1602,7 +1603,7 @@ _nis_getpwnam(void *nsrv, void *nscb, va snprintf(_nis_passwdbuf, sizeof(_nis_passwdbuf), "%s", name); rv = _nis_pwscan(&rerror, &_nis_passwd, _nis_passwdbuf, sizeof(_nis_passwdbuf), - &_nis_state, __nis_pw_n_map); + &_nis_state, __nis_pw_n_map, __arraycount(__nis_pw_n_map)); if (!_nis_state.stayopen) _nis_end(&_nis_state); if (rv == NS_SUCCESS && strcmp(name, _nis_passwd.pw_name) == 0) @@ -1635,14 +1636,14 @@ _nis_getpwnam_r(void *nsrv, void *nscb, if (_nis_state.stayopen) { /* use global state only if stayopen is set - otherwise we would blow up getpwent_r() ... */ rv = _nis_pwscan(retval, pw, buffer, buflen, - &_nis_state, __nis_pw_n_map); + &_nis_state, __nis_pw_n_map, __arraycount(__nis_pw_n_map)); } else { /* keep old semantic if no stayopen set - no need to call _nis_start() here - _nis_pwscan() will do it for us ... */ /* use same way as in getgrent.c ... */ memset(&state, 0, sizeof(state)); rv = _nis_pwscan(retval, pw, buffer, buflen, - &state, __nis_pw_n_map); + &state, __nis_pw_n_map, __arraycount(__nis_pw_n_map)); _nis_end(&state); } if (rv != NS_SUCCESS)