From 860ad58af0e1c39d5ffda0474ed3c58aaa1ecca5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Andr=C3=A9=20Tanner?= Date: Tue, 30 Jun 2015 13:47:28 +0200 Subject: Fix segfault in cmd_filter Using FD_ISSET on negative file descriptors results in breakage. Closes #55. --- vis.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/vis.c b/vis.c index 34f8837..63c574e 100644 --- a/vis.c +++ b/vis.c @@ -1779,7 +1779,7 @@ static bool cmd_filter(Filerange *range, enum CmdOpt opt, const char *argv[]) { break; } - if (FD_ISSET(pin[1], &wfds)) { + if (pin[1] != -1 && FD_ISSET(pin[1], &wfds)) { Filerange junk = *range; if (junk.end > junk.start + PIPE_BUF) junk.end = junk.start + PIPE_BUF; @@ -1798,7 +1798,7 @@ static bool cmd_filter(Filerange *range, enum CmdOpt opt, const char *argv[]) { } } - if (FD_ISSET(pout[0], &rfds)) { + if (pout[0] != -1 && FD_ISSET(pout[0], &rfds)) { char buf[BUFSIZ]; ssize_t len = read(pout[0], buf, sizeof buf); if (len > 0) { @@ -1814,7 +1814,7 @@ static bool cmd_filter(Filerange *range, enum CmdOpt opt, const char *argv[]) { } } - if (FD_ISSET(perr[0], &rfds)) { + if (perr[0] != -1 && FD_ISSET(perr[0], &rfds)) { char buf[BUFSIZ]; ssize_t len = read(perr[0], buf, sizeof buf); if (len > 0) { -- cgit v1.2.3