From 537fbe13af6a70e105982c4b69c1bcc3908ffb08 Mon Sep 17 00:00:00 2001 From: NIIBE Yutaka Date: Tue, 4 Jun 2019 13:39:46 +0900 Subject: g10: Block signals in g10_exit. * g10/gpg.c (g10_exit): Block all signals before calling emergency_cleanup. -- There is a race condition here which results crash of the process. When a signal is delivered in emergency_cleanup, it is called again. This change fixes the problem. GnuPG-bug-id: 2747 Signed-off-by: NIIBE Yutaka --- g10/gpg.c | 1 + 1 file changed, 1 insertion(+) diff --git a/g10/gpg.c b/g10/gpg.c index b46d22690..1819c3fe8 100644 --- a/g10/gpg.c +++ b/g10/gpg.c @@ -5231,6 +5231,7 @@ g10_exit( int rc ) if (opt.debug) gcry_control (GCRYCTL_DUMP_SECMEM_STATS ); + gnupg_block_all_signals (); emergency_cleanup (); rc = rc? rc : log_get_errorcount(0)? 2 : g10_errors_seen? 1 : 0; -- cgit v1.2.3