]> git.cameronkatri.com Git - mandoc.git/commitdiff
Do not die on an assertion if an input file contains no section
authorIngo Schwarze <schwarze@openbsd.org>
Wed, 13 Apr 2022 14:45:50 +0000 (14:45 +0000)
committerIngo Schwarze <schwarze@openbsd.org>
Wed, 13 Apr 2022 14:45:50 +0000 (14:45 +0000)
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
regress/man/TH/nobody.in
regress/man/TH/nobody.out_ascii
regress/man/TH/nobody.out_lint

index b3c3a3cb488b273bca0d81bc65dca51bfc1c6bbe..40033a6629932bb471061acdd75b70e106d7dd3e 100644 (file)
@@ -1,7 +1,7 @@
-/* $Id: man_macro.c,v 1.145 2020/09/09 17:01:10 schwarze Exp $ */
+/* $Id: man_macro.c,v 1.146 2022/04/13 14:45:50 schwarze Exp $ */
 /*
+ * Copyright (c) 2012-2015,2017-2020,2022 Ingo Schwarze <schwarze@openbsd.org>
  * Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv>
- * Copyright (c) 2012-2015, 2017-2020 Ingo Schwarze <schwarze@openbsd.org>
  * Copyright (c) 2013 Franco Fichtner <franco@lastsummer.de>
  *
  * 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 {
index b24909ad661fda6a0d5e84adee2beb968c3362c2..5ef4c1d46ad9bb62f16685e0de1869101d96b88a 100644 (file)
@@ -1,2 +1,3 @@
-.\" $OpenBSD: nobody.in,v 1.2 2017/07/04 14:53:24 schwarze Exp $
-.TH TH-NOBODY 1 "June 20, 2014"
+.\" $OpenBSD: nobody.in,v 1.3 2022/04/13 14:37:34 schwarze Exp $
+.TH TH-NOBODY 1 "April 13, 2022"
+.B
index 2b0b1ed2325195a96c46f0b0bfbc6be20ef686b6..975e8a777dcdc88716003c1524ede50ef4bce5ed 100644 (file)
@@ -1,3 +1,3 @@
 TH-NOBODY(1)                General Commands Manual               TH-NOBODY(1)
 
-OpenBSD                          June 20, 2014                    TH-NOBODY(1)
+OpenBSD                         April 13, 2022                    TH-NOBODY(1)
index f5439fcdc567c0c62a92a0d925f30df066f863ce..dae5fdf0cf24d7b95564b71fe48577dc5594772f 100644 (file)
@@ -1 +1,2 @@
+mandoc: nobody.in:3:2: WARNING: line scope broken: EOF breaks B
 mandoc: nobody.in: WARNING: no document body