diff options
author | 2011-01-09 13:16:48 +0000 | |
---|---|---|
committer | 2011-01-09 13:16:48 +0000 | |
commit | 609398efd4476313c8df3e646acd40ef139f3a0b (patch) | |
tree | 3828f622a31eeef0d56db073442decfeaa70b8ab /usr.bin/mandoc/man.c | |
parent | add yet another check: obviously in a @depend line, if the def part doesn't (diff) | |
download | wireguard-openbsd-609398efd4476313c8df3e646acd40ef139f3a0b.tar.xz wireguard-openbsd-609398efd4476313c8df3e646acd40ef139f3a0b.zip |
Make sure coding errors cannot make us miss fatal parsing errors
by assert(3)ing valid parser state in the main parsing functions;
from kristaps@.
Diffstat (limited to 'usr.bin/mandoc/man.c')
-rw-r--r-- | usr.bin/mandoc/man.c | 20 |
1 files changed, 10 insertions, 10 deletions
diff --git a/usr.bin/mandoc/man.c b/usr.bin/mandoc/man.c index 2f534e1d9d1..09d79242b7c 100644 --- a/usr.bin/mandoc/man.c +++ b/usr.bin/mandoc/man.c @@ -1,4 +1,4 @@ -/* $Id: man.c,v 1.52 2011/01/04 22:28:17 schwarze Exp $ */ +/* $Id: man.c,v 1.53 2011/01/09 13:16:48 schwarze Exp $ */ /* * Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv> * @@ -60,7 +60,8 @@ const struct man_node * man_node(const struct man *m) { - return(MAN_HALT & m->flags ? NULL : m->first); + assert( ! (MAN_HALT & m->flags)); + return(m->first); } @@ -68,7 +69,8 @@ const struct man_meta * man_meta(const struct man *m) { - return(MAN_HALT & m->flags ? NULL : &m->meta); + assert( ! (MAN_HALT & m->flags)); + return(&m->meta); } @@ -111,9 +113,8 @@ int man_endparse(struct man *m) { - if (MAN_HALT & m->flags) - return(0); - else if (man_macroend(m)) + assert( ! (MAN_HALT & m->flags)); + if (man_macroend(m)) return(1); m->flags |= MAN_HALT; return(0); @@ -124,9 +125,7 @@ int man_parseln(struct man *m, int ln, char *buf, int offs) { - if (MAN_HALT & m->flags) - return(0); - + assert( ! (MAN_HALT & m->flags)); return(('.' == buf[offs] || '\'' == buf[offs]) ? man_pmacro(m, ln, buf, offs) : man_ptext(m, ln, buf, offs)); @@ -359,6 +358,7 @@ int man_addspan(struct man *m, const struct tbl_span *sp) { + assert( ! (MAN_HALT & m->flags)); if ( ! man_span_alloc(m, sp)) return(0); return(man_descope(m, 0, 0)); @@ -461,7 +461,7 @@ man_ptext(struct man *m, int line, char *buf, int offs) } -int +static int man_pmacro(struct man *m, int ln, char *buf, int offs) { int i, j, ppos; |