diff options
author | June McEnroe <june@causal.agency> | 2021-09-26 17:39:08 -0400 |
---|---|---|
committer | June McEnroe <june@causal.agency> | 2021-09-26 17:39:08 -0400 |
commit | f346f61ea05e3500c37f52f0bfd8ef4754991716 (patch) | |
tree | 7709d9f197fea42b8b567fcacaa47a35a1517bea | |
parent | OpenBSD: Simplify pledge(2) and unveil(2) strategy (diff) | |
download | catsit-f346f61ea05e3500c37f52f0bfd8ef4754991716.tar.gz catsit-f346f61ea05e3500c37f52f0bfd8ef4754991716.zip |
Don't parse config until after daemonization
And consequently, until after pledge(2) and unveil(2) on OpenBSD. Replace parsing before daemonization with a simple check that the file is readable. There's not much that can go wrong in parsing anyway.
-rw-r--r-- | daemon.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/daemon.c b/daemon.c index 88f59b2..efeaf22 100644 --- a/daemon.c +++ b/daemon.c @@ -216,6 +216,9 @@ int main(int argc, char *argv[]) { } } + error = access(configPath, R_OK); + if (error) err(EX_NOINPUT, "%s", configPath); + error = access(serviceDir, X_OK); if (error) err(EX_NOINPUT, "%s", serviceDir); @@ -269,9 +272,6 @@ int main(int argc, char *argv[]) { int writer = open(fifoPath, O_WRONLY | O_NONBLOCK | O_CLOEXEC); if (writer < 0) err(EX_CANTCREAT, "%s", fifoPath); - error = parseConfig(configPath); - if (error) return EX_DATAERR; - if (daemonize) { error = daemon(0, 0); if (error) { @@ -306,6 +306,7 @@ int main(int argc, char *argv[]) { signal(SIGCHLD, signalHandler); signal(SIGINFO, signalHandler); + parseConfig(configPath); for (size_t i = 0; i < services.len; ++i) { serviceStart(&services.ptr[i]); } |