From 90d8cc16486479441477e89c2e09bd4f9f7604bb Mon Sep 17 00:00:00 2001 From: Lubos Kardos Date: Fri, 30 Oct 2015 14:42:32 +0100 Subject: [PATCH] Ignore SIGPIPE signals during execucton of scriptlets (rhbz:1264198) --- lib/rpmscript.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/lib/rpmscript.c b/lib/rpmscript.c index 493f4f2..98d3f42 100644 --- a/lib/rpmscript.c +++ b/lib/rpmscript.c @@ -271,6 +271,7 @@ static rpmRC runExtScript(rpmPlugins plugins, ARGV_const_t prefixes, const char *line; char *mline = NULL; rpmRC rc = RPMRC_FAIL; + struct sigaction newact, oldact; rpmlog(RPMLOG_DEBUG, "%s: scriptlet start\n", sname); @@ -318,6 +319,12 @@ static rpmRC runExtScript(rpmPlugins plugins, ARGV_const_t prefixes, goto exit; } + /* Ignore SIGPIPE during execution of scriptlets */ + sigemptyset(&newact.sa_mask); + newact.sa_flags = 0; + newact.sa_handler = SIG_IGN; + sigaction(SIGPIPE, &newact, &oldact); + pid = fork(); if (pid == (pid_t) -1) { rpmlog(RPMLOG_ERR, _("Couldn't fork %s: %s\n"), @@ -428,6 +435,10 @@ exit: free(fn); } free(mline); + + /* Restore SIGPIPE handler */ + sigaction(SIGPIPE, &oldact, NULL); + return rc; } -- 1.9.3