From c70da6dcdfad1b5512f6350e57365e98dea19d55 Mon Sep 17 00:00:00 2001 From: "Todd C. Miller" Date: Wed, 4 May 2016 14:13:44 -0600 Subject: [PATCH] In dispatch_signal() for stopped processes check for tcgetpgrp() returning -1. Also change checks from "saved_pgrp != -1" to "fd != -1". Coverity CID 104098. --- src/exec.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/exec.c b/src/exec.c index e10a567ab..f38128606 100644 --- a/src/exec.c +++ b/src/exec.c @@ -565,6 +565,12 @@ dispatch_signal(struct sudo_event_base *evbase, pid_t child, int fd = open(_PATH_TTY, O_RDWR|O_NOCTTY, 0); if (fd != -1) { saved_pgrp = tcgetpgrp(fd); + if (saved_pgrp == -1) { + close(fd); + fd = -1; + } + } + if (saved_pgrp != -1) { /* * Child was stopped trying to access controlling * terminal. If the child has a different pgrp @@ -605,7 +611,7 @@ dispatch_signal(struct sudo_event_base *evbase, pid_t child, SIGTSTP); } } - if (fd != -1) { + if (saved_pgrp != -1) { /* * Restore command's process group if different. * Otherwise, we cannot resume some shells. -- 2.40.0