From: Karel Zak Date: Fri, 7 Sep 2012 11:29:55 +0000 (+0200) Subject: lib/pager: robust work with file descriptors [coverity scan] X-Git-Tag: v2.23-rc1~711 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=9d48340d44a83fdfc24ce70a69fd84b6dd0ca3fd;p=thirdparty%2Futil-linux.git lib/pager: robust work with file descriptors [coverity scan] Signed-off-by: Karel Zak --- diff --git a/lib/pager.c b/lib/pager.c index 1fce5bf20e..5cf8c03b5e 100644 --- a/lib/pager.c +++ b/lib/pager.c @@ -17,6 +17,8 @@ #include "xalloc.h" #include "nls.h" +#define NULL_DEVICE "/dev/null" + void setup_pager(void); static const char *pager_argv[] = { "sh", "-c", NULL, NULL }; @@ -40,7 +42,10 @@ static inline void close_pair(int fd[2]) static inline void dup_devnull(int to) { - int fd = open("/dev/null", O_RDWR); + int fd = open(NULL_DEVICE, O_RDWR); + + if (fd < 0) + err(EXIT_FAILURE, _("cannot open %s"), NULL_DEVICE); dup2(fd, to); close(fd); } @@ -70,7 +75,7 @@ static int start_command(struct child_process *cmd) if (need_in) { dup2(fdin[0], 0); close_pair(fdin); - } else if (cmd->in) { + } else if (cmd->in > 0) { dup2(cmd->in, 0); close(cmd->in); }