From 25c4c61a9599590ce4d610621ff0bffde7ae5e82 Mon Sep 17 00:00:00 2001
From: Panu Matilainen <pmatilai@redhat.com>
Date: Thu, 3 Mar 2022 10:31:28 +0200
Subject: [PATCH] Fix regression on ctrl-c during transaction killing
 scriptlets

Commit cb6aa82dbc10d554f8d234e934ae7c77e39a3ce2 unblocked all signals
from scriptlets, but turns out this is too much: SIGINT, SIGTSTP and
SIGQUIT sent from the terminal are passed to the process group, and
with unblocked signals end up killing our scriptlets while rpm itself
continues. -ENOSENSE.

Stopping (and continuing) is okay though so we don't block that.
---
 lib/rpmscript.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/lib/rpmscript.c b/lib/rpmscript.c
index e123916a9..3d6f3a72c 100644
--- a/lib/rpmscript.c
+++ b/lib/rpmscript.c
@@ -197,8 +197,10 @@ static void doScriptExec(ARGV_const_t argv, ARGV_const_t prefixes,
     int xx;
     sigset_t set;
 
-    /* Unmask all signals, the scripts may need them */
+    /* Unmask most signals, the scripts may need them */
     sigfillset(&set);
+    sigdelset(&set, SIGINT);
+    sigdelset(&set, SIGQUIT);
     sigprocmask(SIG_UNBLOCK, &set, NULL);
 
     /* SIGPIPE is ignored in rpm, reset to default for the scriptlet */
-- 
2.27.0

