diff options
-rw-r--r-- | daemon.c | 28 |
1 files 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 ); |