Apply by doing:
cd /usr/src
patch -p0 < 005_pwd_mkdb.patch
And then rebuild and install pwd_mkdb:
cd usr.sbin/pwd_mkdb
make obj
make depend
make
make install
Index: usr.sbin/pwd_mkdb/pwd_mkdb.c
===================================================================
RCS file: /cvs/src/usr.sbin/pwd_mkdb/pwd_mkdb.c,v
retrieving revision 1.23
retrieving revision 1.24
diff -u -r1.23 -r1.24
--- usr.sbin/pwd_mkdb/pwd_mkdb.c 2000/11/26 19:35:46 1.23
+++ usr.sbin/pwd_mkdb/pwd_mkdb.c 2001/06/07 16:21:49 1.24
@@ -285,7 +285,7 @@
data.data = (u_char *)NULL;
data.size = 0;
- if ((dp->put)(edp, &key, &data, R_NOOVERWRITE) == -1)
+ if ((edp->put)(edp, &key, &data, R_NOOVERWRITE) == -1)
error("put");
if ((dp->put)(dp, &key, &data, R_NOOVERWRITE) == -1)
error("put");
@@ -538,7 +538,7 @@
tbuf[0] = _PW_KEYBYUID;
memcpy(tbuf + 1, &olduid, sizeof(olduid));
key.size = sizeof(olduid) + 1;
- (edp->del)(dp, &key, 0);
+ (edp->del)(edp, &key, 0);
(dp->del)(dp, &key, 0);
}
/* XXX - should check to see if line number changed. */
@@ -586,7 +586,7 @@
data.size = p - buf;
/* Write the secure record. */
- if ((dp->put)(edp, &key, &data, dbmode) == -1)
+ if ((edp->put)(edp, &key, &data, dbmode) == -1)
error("put");
/* Star out password to make insecure record. */
@@ -594,7 +594,8 @@
len = strlen(pw->pw_passwd);
memset(p, 0, len); /* zero pw_passwd */
t = p + len + 1; /* skip pw_passwd */
- *p++ = '*';
+ if (len != 0)
+ *p++ = '*';
*p++ = '\0';
memmove(p, t, data.size - (t - buf));
data.size -= len - 1;