slackware-current/source/d/make/0370a7a40fe9523ea334dcb8a2a60f1418595b49.patch
Patrick J Volkerding a8f1aa5a10 Thu Nov 24 20:55:37 UTC 2022
a/bash-5.2.012-x86_64-1.txz:  Upgraded.
a/less-612-x86_64-1.txz:  Upgraded.
a/tcsh-6.24.02-x86_64-1.txz:  Upgraded.
ap/vim-9.0.0942-x86_64-1.txz:  Upgraded.
d/make-4.4-x86_64-2.txz:  Rebuilt.
  [SV 63307] Spawn children with the default disposition of sigpipe.
  Thanks to nobodino.
d/ruby-3.1.3-x86_64-1.txz:  Upgraded.
  This release includes a security fix:
  HTTP response splitting in CGI.
  For more information, see:
    https://www.cve.org/CVERecord?id=CVE-2021-33621
  (* Security fix *)
l/pipewire-0.3.61-x86_64-1.txz:  Upgraded.
n/ipset-7.16-x86_64-1.txz:  Upgraded.
x/fcitx5-5.0.21-x86_64-1.txz:  Upgraded.
xap/vim-gvim-9.0.0942-x86_64-1.txz:  Upgraded.
2022-11-25 07:00:37 +01:00

48 lines
1.4 KiB
Diff

commit 0370a7a40fe9523ea334dcb8a2a60f1418595b49
Author: Dmitry Goncharov <dgoncharov@users.sf.net>
Date: Sun Nov 6 07:36:26 2022 -0500
[SV 63307] Spawn children with the default disposition of sigpipe.
* src/main.c (main): Set sigpipe disposition to a handler, rather than
SIG_IGN, in order for children to have the default sigpipe disposition.
* tests/scripts/misc/sigpipe: Add sigpipe tests.
diff --git a/src/main.c b/src/main.c
index eec93656..d8857696 100644
--- a/src/main.c
+++ b/src/main.c
@@ -1152,6 +1152,15 @@ temp_stdin_unlink ()
}
}
+#ifdef SIGPIPE
+static void
+handle_sigpipe (int sig)
+{
+ /* Suppress unused variable warning. */
+ sig = sig;
+}
+#endif
+
#ifdef _AMIGA
int
main (int argc, char **argv)
@@ -1182,9 +1191,15 @@ main (int argc, char **argv, char **envp)
/* Useful for attaching debuggers, etc. */
SPIN ("main-entry");
- /* Don't die if our stdout sends us SIGPIPE. */
+ /* Don't die if our stdout sends us SIGPIPE to get temporary files removed.
+ * If make has inherited SIG_IGN, keep running with SIG_IGN to let make's
+ * children inherit SIG_IGN.
+ * Othwerwise, set sigpipe disposition to a handler, in order for children to
+ * have the default sigpipe disposition. */
+
#ifdef SIGPIPE
- bsd_signal (SIGPIPE, SIG_IGN);
+ if (bsd_signal (SIGPIPE, handle_sigpipe) == SIG_IGN)
+ bsd_signal (SIGPIPE, SIG_IGN);
#endif
#ifdef HAVE_ATEXIT