pwd_mkdb: limit db entries to _PW_BUF_LEN to match libc
authormillert <millert@openbsd.org>
Sun, 28 Jul 2024 19:13:26 +0000 (19:13 +0000)
committermillert <millert@openbsd.org>
Sun, 28 Jul 2024 19:13:26 +0000 (19:13 +0000)
commita63a57f89692a86cb0e0973483b9f8f8a9206f7a
treeac8be64b4d38374aae40e10638ecd2231231fbba
parent324a3c8c4fa8ffde0089779a36a18802d9141d5c
pwd_mkdb: limit db entries to _PW_BUF_LEN to match libc

Otherwise, it is possible to create a passwd(5) entry that is too
large for getpwent(3), which ignores database entries larger than
_PW_BUF_LEN.  This adds a check in db_store() so that we do not
store an entry larger than getpwent(3) can read.  Callers of
pwd_mkdb(8), typically via pw_mkdb(3), already check for failure.

In most cases, the checks in chpass(1) will prevent a user from
creating an entry that is too large by changing their gecos field.
However, it is only when storing the db record that we know the
true size.

OK deraadt@
usr.sbin/pwd_mkdb/pwd_mkdb.c