From b7ebd38698c35c23492857f50cbcc6bf124e2757 Mon Sep 17 00:00:00 2001 From: "C. McEnroe" Date: Tue, 10 Nov 2020 15:15:13 -0500 Subject: Refactor unveil calls so errors can be reported properly --- daemon.c | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/daemon.c b/daemon.c index 15c278d..cf7f805 100644 --- a/daemon.c +++ b/daemon.c @@ -216,19 +216,23 @@ int main(int argc, char *argv[]) { } #ifdef __OpenBSD__ - if (pidPath) { - error = unveil(pidPath, "cw"); - if (error) err(EX_OSERR, "unveil"); + struct { + const char *path; + const char *mode; + } paths[] = { + { fifoPath, "crw" }, + { configPath, "r" }, + { "/", "r" }, + { "/dev/null", "rw" }, + { serviceDir, "r" }, + { _PATH_BSHELL, "x" }, + { pidPath, "cw" }, + { NULL, NULL }, + }; + for (size_t i = 0; paths[i].path; ++i) { + error = unveil(paths[i].path, paths[i].mode); + if (error) err(EX_CANTCREAT, "%s", paths[i].path); } - error = unveil(fifoPath, "crw") - || unveil(configPath, "r") - || unveil("/", "r") - || unveil("/dev/null", "rw") - || unveil(serviceDir, "r") - || unveil(_PATH_BSHELL, "x") - || unveil(NULL, NULL); - if (error) err(EX_OSERR, "unveil"); - error = pledge( "stdio cpath dpath rpath wpath flock getpw proc exec id", NULL ); -- cgit 1.4.1