diff options
author | June McEnroe <june@causal.agency> | 2020-11-10 15:15:13 -0500 |
---|---|---|
committer | June McEnroe <june@causal.agency> | 2020-11-10 15:15:43 -0500 |
commit | b7ebd38698c35c23492857f50cbcc6bf124e2757 (patch) | |
tree | 48c072337ffb9327fa927f038e2fe7644bffc2ec | |
parent | Do not increment signals (diff) | |
download | catsit-b7ebd38698c35c23492857f50cbcc6bf124e2757.tar.gz catsit-b7ebd38698c35c23492857f50cbcc6bf124e2757.zip |
Refactor unveil calls so errors can be reported properly
-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 ); |