- 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
This commit is contained in:
Bryan Drewery 2017-08-11 18:32:57 +00:00
parent b2f4914a22
commit 3adb452fd9
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=447784
2 changed files with 27 additions and 1 deletions

View File

@ -3,7 +3,7 @@
PORTNAME= sudo
PORTVERSION= 1.8.20p2
PORTREVISION= 2
PORTREVISION= 3
CATEGORIES= security
MASTER_SITES= SUDO

View File

@ -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