From 882b0df046673132c4d2d6f14969d087ead1d87c Mon Sep 17 00:00:00 2001 From: Ingo Schwarze Date: Wed, 13 Apr 2022 14:45:50 +0000 Subject: Do not die on an assertion if an input file contains no section whatsoever and ends with a broken next-line scope. Obviously, this cannot happen in a real manual page, but mandoc(1) should not die even when fed absurd input. This bug was independently reported by both jsg@ and tb@ who both found it with afl(1). --- man_macro.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'man_macro.c') diff --git a/man_macro.c b/man_macro.c index b040823a..e16a6a74 100644 --- a/man_macro.c +++ b/man_macro.c @@ -1,7 +1,7 @@ /* $Id$ */ /* + * Copyright (c) 2012-2015,2017-2020,2022 Ingo Schwarze * Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons - * Copyright (c) 2012-2015, 2017-2020 Ingo Schwarze * Copyright (c) 2013 Franco Fichtner * * Permission to use, copy, modify, and distribute this software for any @@ -108,7 +108,8 @@ man_unscope(struct roff_man *man, const struct roff_node *to) n->line, n->pos, "EOF breaks %s", roff_name[n->tok]); if (man->flags & MAN_ELINE) { - if ((man_macro(n->parent->tok)->flags & + if (n->parent->type == ROFFT_ROOT || + (man_macro(n->parent->tok)->flags & MAN_ESCOPED) == 0) man->flags &= ~MAN_ELINE; } else { -- cgit