From d7277fc96eb7dfbc79e3fddf26dbcde272ddec0e Mon Sep 17 00:00:00 2001 From: "Todd C. Miller" Date: Tue, 14 Jan 2014 10:54:56 -0700 Subject: [PATCH] If not logging I/O we may get EOF when the command is executed and the other end of the backchannel is closed. Just remove the backchannel event in this case or we will continue to receive the event. Bug #631 --- src/exec.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/exec.c b/src/exec.c index 705573e19..744ee615b 100644 --- a/src/exec.c +++ b/src/exec.c @@ -230,11 +230,14 @@ backchannel_cb(int fd, int what, void *v) /* Short read or EOF. */ sudo_debug_printf(SUDO_DEBUG_ERROR, "failed to read child status: %s", n ? "short read" : "EOF"); - /* - * If not logging I/O we may get EOF when the command is - * executed and sv is closed. It is safe to ignore this. - */ - if (ec->log_io || n != 0) { + if (!ec->log_io && n == 0) { + /* + * If not logging I/O we may get EOF when the command is + * executed and the other end of the backchannel is closed. + * Just remove the event in this case. + */ + (void)sudo_ev_del(ec->evbase, backchannel_event); + } else { /* XXX - need new CMD_ type for monitor errors. */ errno = n ? EIO : ECONNRESET; ec->cstat->type = CMD_ERRNO;