From cb1515965e22f6ee49d207ee6fbe66f94e9230ba Mon Sep 17 00:00:00 2001 From: schwarze Date: Fri, 30 Jan 2015 17:31:20 +0000 Subject: 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. --- usr.bin/mandoc/tbl_term.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'usr.bin/mandoc/tbl_term.c') diff --git a/usr.bin/mandoc/tbl_term.c b/usr.bin/mandoc/tbl_term.c index 91cda335046..40b24a63439 100644 --- a/usr.bin/mandoc/tbl_term.c +++ b/usr.bin/mandoc/tbl_term.c @@ -1,4 +1,4 @@ -/* $OpenBSD: tbl_term.c,v 1.24 2015/01/30 04:08:37 schwarze Exp $ */ +/* $OpenBSD: tbl_term.c,v 1.25 2015/01/30 17:31:20 schwarze Exp $ */ /* * Copyright (c) 2009, 2011 Kristaps Dzonsons * Copyright (c) 2011, 2012, 2014, 2015 Ingo Schwarze @@ -79,7 +79,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; @@ -187,7 +187,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; -- cgit v1.2.3-59-g8ed1b