From a233afb35d3281662cd0deb51ea225388068e3b8 Mon Sep 17 00:00:00 2001 From: Ingo Schwarze Date: Fri, 23 Feb 2018 16:47:10 +0000 Subject: Invalidate the tag_files.tfd after fclose(3)ing the stram associated with it. In main() assert that the tfd was actually invalidated. This avoids closing an invalid fd. From tb@; OK deraadt@ on an earlier version. --- main.c | 2 +- tag.c | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/main.c b/main.c index 308f7fb5..f7c15494 100644 --- a/main.c +++ b/main.c @@ -1184,7 +1184,7 @@ spawn_pager(struct tag_files *tag_files) if (dup2(tag_files->ofd, STDOUT_FILENO) == -1) err((int)MANDOCLEVEL_SYSERR, "pager stdout"); close(tag_files->ofd); - close(tag_files->tfd); + assert(tag_files->tfd == -1); /* Do not start the pager before controlling the terminal. */ diff --git a/tag.c b/tag.c index b57df552..5862db63 100644 --- a/tag.c +++ b/tag.c @@ -213,6 +213,9 @@ tag_write(void) ohash_delete(&tag_data); if (stream != NULL) fclose(stream); + else + close(tag_files.tfd); + tag_files.tfd = -1; } void -- cgit