From c909243f40b4d1e5236025ac1661083b9e38573f Mon Sep 17 00:00:00 2001 From: Gordon Tetlow Date: Wed, 6 Jul 2011 06:34:08 +0000 Subject: [PATCH] Only increment the ypcnt once per data record. The old implementation was incrementing it twice making it impossible to iterate the table since the records were 1, 3, 5, 7 (or 2, 4, 6, 8 for the v3 records). MFC after: 10 days --- usr.sbin/pwd_mkdb/pwd_mkdb.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/usr.sbin/pwd_mkdb/pwd_mkdb.c b/usr.sbin/pwd_mkdb/pwd_mkdb.c index 2abbcdf34c99..79f91a90e553 100644 --- a/usr.sbin/pwd_mkdb/pwd_mkdb.c +++ b/usr.sbin/pwd_mkdb/pwd_mkdb.c @@ -351,14 +351,16 @@ main(int argc, char *argv[]) if ((dp->put)(sdp, &key, &data, 0) == -1) error("put"); } - ypcnt = 1; + ypcnt = 0; data.data = (u_char *)buf; sdata.data = (u_char *)sbuf; key.data = (u_char *)tbuf; for (cnt = 1; scan(fp, &pwd); ++cnt) { if (!is_comment && - (pwd.pw_name[0] == '+' || pwd.pw_name[0] == '-')) + (pwd.pw_name[0] == '+' || pwd.pw_name[0] == '-')) { yp_enabled = 1; + ypcnt++; + } if (is_comment) --cnt; #define COMPACT(e) t = e; while ((*p++ = *t++)); @@ -456,7 +458,6 @@ main(int argc, char *argv[]) tbuf[0] = CURRENT_VERSION(_PW_KEYYPBYNUM); store = htonl(ypcnt); memmove(tbuf + 1, &store, sizeof(store)); - ypcnt++; key.size = sizeof(store) + 1; if ((dp->put)(dp, &key, &data, method) == -1) error("put"); @@ -547,7 +548,6 @@ main(int argc, char *argv[]) tbuf[0] = LEGACY_VERSION(_PW_KEYYPBYNUM); store = HTOL(ypcnt); memmove(tbuf + 1, &store, sizeof(store)); - ypcnt++; key.size = sizeof(store) + 1; if ((dp->put)(dp, &key, &data, method) == -1) error("put");