diff options
author | Ingo Schwarze <schwarze@openbsd.org> | 2015-01-30 17:32:16 +0000 |
---|---|---|
committer | Ingo Schwarze <schwarze@openbsd.org> | 2015-01-30 17:32:16 +0000 |
commit | fa0509ac63ac6d0a43a709893722ed6ca5f80611 (patch) | |
tree | ff27fe4b98063dd10dbfc48b8d77712105d72c7c /tbl_html.c | |
parent | 37b1fa2022515dadb78d40e740849dfc6bd68996 (diff) | |
download | mandoc-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_html.c')
-rw-r--r-- | tbl_html.c | 4 |
1 files changed, 2 insertions, 2 deletions
@@ -54,7 +54,7 @@ html_tblopen(struct html *h, const struct tbl_span *sp) struct roffcol *col; int ic; - if (sp->flags & TBL_SPAN_FIRST) { + if (h->tbl.cols == NULL) { h->tbl.len = html_tbl_len; h->tbl.slen = html_tbl_strlen; tblcalc(&h->tbl, sp, 0); @@ -132,7 +132,7 @@ print_tbl(struct html *h, const struct tbl_span *sp) h->flags &= ~HTML_NONOSPACE; - if (sp->flags & TBL_SPAN_LAST) { + if (sp->next == NULL) { assert(h->tbl.cols); free(h->tbl.cols); h->tbl.cols = NULL; |