Since each database that has the rpath promise only needs to access one
authormestre <mestre@openbsd.org>
Tue, 25 Sep 2018 06:48:48 +0000 (06:48 +0000)
committermestre <mestre@openbsd.org>
Tue, 25 Sep 2018 06:48:48 +0000 (06:48 +0000)
commit048d4bd74bd77bacfec912c0bf0ce6416117c38d
tree1d16a5349caeb5bcb4e83f8c668e7321b64e649d
parent12996ffa3223b6b3ef6d449c570f5e5c36a6399f
Since each database that has the rpath promise only needs to access one
specific file (in read mode) we can add a 4th attribute to the struct getentdb
to define each of those files, except for group/hosts/passwd dbs which will be
assigned NULL to that attribute because all the necessary files they need to
open are already whitelisted through pledge(2) via either dns or getpw
promises.

With that set we can then check if the 4th attribute (called unveil) is not
NULL and in that case unveil(2) that specific file per each database.

After a discussion with millert@ regarding YP then deraadt@ chimed in referring
that when he wrote this code even though we can have YP mappings with several
of these dbs "it doesn't mean that things use it, or should, or will" so adding
unveil(2) here should not impact any YP environments.

OK millert@ deraadt@
usr.bin/getent/getent.c