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)

Reply via email to