summaryrefslogtreecommitdiffstats
path: root/tbl_term.c
diff options
context:
space:
mode:
authorIngo Schwarze <schwarze@openbsd.org>2015-01-30 17:32:16 +0000
committerIngo Schwarze <schwarze@openbsd.org>2015-01-30 17:32:16 +0000
commitfa0509ac63ac6d0a43a709893722ed6ca5f80611 (patch)
treeff27fe4b98063dd10dbfc48b8d77712105d72c7c /tbl_term.c
parent37b1fa2022515dadb78d40e740849dfc6bd68996 (diff)
downloadmandoc-fa0509ac63ac6d0a43a709893722ed6ca5f80611.tar.gz
Delete the redundant tbl span flags, just inspect the actual data
where needed, which is less fragile. This fixes a subtle NULL pointer access to tp->tbl.cols: Due to a bug in the man(7) parser, the first span of a table can end up in a .TP head, in which case tblcalc() was never called. Found by jsg@ with afl.
Diffstat (limited to 'tbl_term.c')
-rw-r--r--tbl_term.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/tbl_term.c b/tbl_term.c
index 8e42fe38..b96804c9 100644
--- a/tbl_term.c
+++ b/tbl_term.c
@@ -81,7 +81,7 @@ term_tbl(struct termp *tp, const struct tbl_span *sp)
* calculate the table widths and decimal positions.
*/
- if (sp->flags & TBL_SPAN_FIRST) {
+ if (tp->tbl.cols == NULL) {
term_flushln(tp);
tp->tbl.len = term_tbl_len;
@@ -189,7 +189,7 @@ term_tbl(struct termp *tp, const struct tbl_span *sp)
* existing table configuration and set it to NULL.
*/
- if (sp->flags & TBL_SPAN_LAST) {
+ if (sp->next == NULL) {
if (sp->opts->opts & (TBL_OPT_DBOX | TBL_OPT_BOX)) {
tbl_hrule(tp, sp, 1);
tp->skipvsp = 1;