Fix a crash in rdistd triggered by the recent getpw{ent,nam,uid}
authormillert <millert@openbsd.org>
Sun, 9 Sep 2018 13:53:11 +0000 (13:53 +0000)
committermillert <millert@openbsd.org>
Sun, 9 Sep 2018 13:53:11 +0000 (13:53 +0000)
commit4a6ec615e0b892f1f397132beec4216815a805c8
tree6d630617203e7613530a4e815d1f8c71cfdd2ec6
parentfa4fc2c4832f83183030e04339e69a017147c1ea
Fix a crash in rdistd triggered by the recent getpw{ent,nam,uid}
changes.  This stems from rdist stashing a pointer to the static
area used by getpw{ent,nam,uid} and using it to avoid repeating
passwd lookups when pw->pw_name matches the user to be looked up.

This relied on undefined behavior, and with the recent passwd
changes, is no longer possible as the old pointer will be invalidated.
A better approach is to use the upcoming uid_from_user(3) functions.
Found by and fix OK tim@
usr.bin/rdist/common.c
usr.bin/rdist/defs.h
usr.bin/rdist/expand.c
usr.bin/rdistd/server.c