diff options
author | NIIBE Yutaka <[email protected]> | 2016-10-04 00:01:13 +0000 |
---|---|---|
committer | NIIBE Yutaka <[email protected]> | 2016-10-04 00:01:13 +0000 |
commit | eda17649f8bd3b8ce7bfc00a3c11cbcae63c845d (patch) | |
tree | 07b0c81acce42597ce8b856f3b16b4845c8c2eab /scd/scdaemon.c | |
parent | agent: Remove the warning for the GKR hijacking. (diff) | |
download | gnupg-eda17649f8bd3b8ce7bfc00a3c11cbcae63c845d.tar.gz gnupg-eda17649f8bd3b8ce7bfc00a3c11cbcae63c845d.zip |
agent, dirmngr, scd: npth_init must be after fork.
* agent/gpg-agent.c (thread_init_once, initialize_modules): New.
(main): Make sure no daemonizing-fork call after npth_init, and no npth
calls before npth_init, with care of npth calls by assuan hooks.
* dirmngr/dirmngr.c (thread_init): New.
(main): Make sure npth_init must not be called before daemonizing fork.
* scd/scdaemon.c (main): Likewise.
--
It is simply the best for nPth not to allow the daemonizing fork after
npth_init, because semantics and implementations of forked child process
in a threaded application is a difficult corner case.
GnuPG-bug-id: 1779
Signed-off-by: NIIBE Yutaka <[email protected]>
Diffstat (limited to 'scd/scdaemon.c')
-rw-r--r-- | scd/scdaemon.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/scd/scdaemon.c b/scd/scdaemon.c index bf54d95c0..3571e6614 100644 --- a/scd/scdaemon.c +++ b/scd/scdaemon.c @@ -422,8 +422,6 @@ main (int argc, char **argv ) i18n_init (); init_common_subsystems (&argc, &argv); - npth_init (); - ksba_set_malloc_hooks (gcry_malloc, gcry_realloc, gcry_free); malloc_hooks.malloc = gcry_malloc; @@ -724,6 +722,8 @@ main (int argc, char **argv ) } #endif + npth_init (); + /* If --debug-allow-core-dump has been given we also need to switch the working directory to a place where we can actually write. */ @@ -861,6 +861,8 @@ main (int argc, char **argv ) /* This is the child. */ + npth_init (); + /* Detach from tty and put process into a new session. */ if (!nodetach ) { |