diff options
author | Nick Mathewson <nickm@torproject.org> | 2018-09-13 08:58:28 -0400 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2018-09-13 08:58:28 -0400 |
commit | 75d6609eb1b1503f28054479c92d4f9ad6fe617d (patch) | |
tree | 42a087042343842434289a66d19dcd23e27aa0cf /src/lib | |
parent | bfc847255afb093b89dd82687d796e3e3c7fcb89 (diff) | |
download | tor-75d6609eb1b1503f28054479c92d4f9ad6fe617d.tar.gz tor-75d6609eb1b1503f28054479c92d4f9ad6fe617d.zip |
Run crypto_prefork() before start_daemon().
Without this, RunAsDaemon breaks NSS.
Fixes bug 27664; bug not in any released Tor.
Diffstat (limited to 'src/lib')
-rw-r--r-- | src/lib/process/daemon.c | 10 | ||||
-rw-r--r-- | src/lib/process/daemon.h | 4 |
2 files changed, 14 insertions, 0 deletions
diff --git a/src/lib/process/daemon.c b/src/lib/process/daemon.c index c64affd8b9..9fc31eb2e4 100644 --- a/src/lib/process/daemon.c +++ b/src/lib/process/daemon.c @@ -38,6 +38,16 @@ static int finish_daemon_called = 0; /** Socketpair used to communicate between parent and child process while * daemonizing. */ static int daemon_filedes[2]; + +/** + * Return true iff we've called start_daemon() at least once. + */ +bool +start_daemon_has_been_called(void) +{ + return start_daemon_called != 0; +} + /** Start putting the process into daemon mode: fork and drop all resources * except standard fds. The parent process never returns, but stays around * until finish_daemon is called. (Note: it's safe to call this more diff --git a/src/lib/process/daemon.h b/src/lib/process/daemon.h index c3b78029af..e33bd56701 100644 --- a/src/lib/process/daemon.h +++ b/src/lib/process/daemon.h @@ -11,7 +11,11 @@ #ifndef TOR_DAEMON_H #define TOR_DAEMON_H +#include <stdbool.h> + int start_daemon(void); int finish_daemon(const char *desired_cwd); +bool start_daemon_has_been_called(void); + #endif |