From 3710e49fec4d10ef6acfb714eabf077a7aaa3ce4 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 | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) (limited to 'main.c') diff --git a/main.c b/main.c index 7f1411a6..5421a77c 100644 --- a/main.c +++ b/main.c @@ -1,4 +1,4 @@ -/* $Id: main.c,v 1.301 2017/07/26 10:21:55 schwarze Exp $ */ +/* $Id: main.c,v 1.302 2017/08/21 15:42:58 schwarze Exp $ */ /* * Copyright (c) 2008-2012 Kristaps Dzonsons * Copyright (c) 2010-2012, 2014-2017 Ingo Schwarze @@ -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 v1.2.3