aboutsummaryrefslogtreecommitdiffstats
path: root/scd/scdaemon.c
diff options
context:
space:
mode:
authorNIIBE Yutaka <[email protected]>2016-10-04 00:01:13 +0000
committerNIIBE Yutaka <[email protected]>2016-10-04 00:01:13 +0000
commiteda17649f8bd3b8ce7bfc00a3c11cbcae63c845d (patch)
tree07b0c81acce42597ce8b856f3b16b4845c8c2eab /scd/scdaemon.c
parentagent: Remove the warning for the GKR hijacking. (diff)
downloadgnupg-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.c6
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 )
{