From 3adb452fd9d8bece0e32ae68f0efd682281b237c Mon Sep 17 00:00:00 2001 From: Bryan Drewery Date: Fri, 11 Aug 2017 18:32:57 +0000 Subject: [PATCH] - Fix sudo sending a 2nd SIGINFO on ^T to processes, which is already handled by the kernel sending it to the entire controlling terminal's process group. - This fixes ^T with 'sudo poudriere ...' showing a status log twice. - This is intended to be upstreamed. Approved by: garga (maintainer) Tested by: swills, bdrewery Reviewed/Discussed with: kib Reported by: kwm, swills, bapt, dim, kib, many others MFH: 2017Q3 --- security/sudo/Makefile | 2 +- security/sudo/files/patch-src_exec__nopty.c | 26 +++++++++++++++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) create mode 100644 security/sudo/files/patch-src_exec__nopty.c diff --git a/security/sudo/Makefile b/security/sudo/Makefile index 75341b135537..f37bd6212c50 100644 --- a/security/sudo/Makefile +++ b/security/sudo/Makefile @@ -3,7 +3,7 @@ PORTNAME= sudo PORTVERSION= 1.8.20p2 -PORTREVISION= 2 +PORTREVISION= 3 CATEGORIES= security MASTER_SITES= SUDO diff --git a/security/sudo/files/patch-src_exec__nopty.c b/security/sudo/files/patch-src_exec__nopty.c new file mode 100644 index 000000000000..188125823925 --- /dev/null +++ b/security/sudo/files/patch-src_exec__nopty.c @@ -0,0 +1,26 @@ +--- src/exec_nopty.c.orig 2017-08-09 17:20:41 UTC ++++ src/exec_nopty.c +@@ -201,7 +201,7 @@ exec_nopty(struct command_details *details, struct com + sudo_warn(U_("unable to set handler for signal %d"), SIGCHLD); + if (sudo_sigaction(SIGCONT, &sa, NULL) != 0) + sudo_warn(U_("unable to set handler for signal %d"), SIGCONT); +-#ifdef SIGINFO ++#if defined(SIGINFO) && !defined(__FreeBSD__) + if (sudo_sigaction(SIGINFO, &sa, NULL) != 0) + sudo_warn(U_("unable to set handler for signal %d"), SIGINFO); + #endif +@@ -222,6 +222,14 @@ exec_nopty(struct command_details *details, struct com + sudo_warn(U_("unable to set handler for signal %d"), SIGQUIT); + if (sudo_sigaction(SIGTSTP, &sa, NULL) != 0) + sudo_warn(U_("unable to set handler for signal %d"), SIGTSTP); ++#if defined(SIGINFO) && defined(__FreeBSD__) ++ /* ++ * FreeBSD's ^T will generate a SIGINFO to the controlling terminal's ++ * process group. ++ */ ++ if (sudo_sigaction(SIGINFO, &sa, NULL) != 0) ++ sudo_warn(U_("unable to set handler for signal %d"), SIGINFO); ++#endif + + /* + * The policy plugin's session init must be run before we fork