From 82b23db3547fe38ffdbbddca8303b1ecc1dd4235 Mon Sep 17 00:00:00 2001 From: Ingo Schwarze Date: Mon, 21 Aug 2017 15:42:58 +0000 Subject: When the stdout stream gets broken, there is no point in reading any more input files, and it would be misleading to start a parser, because that would show randomly truncated text. Instead, print an error message and exit the program. Issue found by Leah Neukirchen , who was surprised to see half a manpage when her /tmp/ overflew. --- main.c | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'main.c') diff --git a/main.c b/main.c index e70e1a32..308f7fb5 100644 --- a/main.c +++ b/main.c @@ -484,6 +484,17 @@ main(int argc, char *argv[]) passthrough(resp->file, fd, conf.output.synopsisonly); + if (ferror(stdout)) { + if (tag_files != NULL) { + warn("%s", tag_files->ofn); + tag_unlink(); + tag_files = NULL; + } else + warn("stdout"); + rc = MANDOCLEVEL_SYSERR; + break; + } + if (argc > 1 && curp.outtype <= OUTT_UTF8) { if (curp.outdata == NULL) outdata_alloc(&curp); -- cgit