diff options
author | Joerg Sonnenberger <joerg@netbsd.org> | 2011-11-18 17:04:06 +0000 |
---|---|---|
committer | Joerg Sonnenberger <joerg@netbsd.org> | 2011-11-18 17:04:06 +0000 |
commit | b5a40631c2897991e048c3dca0ec5e35e1c40532 (patch) | |
tree | 99eb00fa1c7079e4cabfb494ba880d47d36b7c84 | |
parent | bd4bbc720d144ab9137b75e4e25b39ec527f5c4c (diff) | |
download | mandoc-b5a40631c2897991e048c3dca0ec5e35e1c40532.tar.gz mandoc-b5a40631c2897991e048c3dca0ec5e35e1c40532.tar.zst mandoc-b5a40631c2897991e048c3dca0ec5e35e1c40532.zip |
Don't crash if the date can't be extracted. Don't depend on snprintf
handling NULL strings.
-rw-r--r-- | man_term.c | 12 |
1 files changed, 7 insertions, 5 deletions
@@ -1,4 +1,4 @@ -/* $Id: man_term.c,v 1.123 2011/11/13 15:33:41 schwarze Exp $ */ +/* $Id: man_term.c,v 1.124 2011/11/18 17:04:06 joerg Exp $ */ /* * Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv> * Copyright (c) 2010, 2011 Ingo Schwarze <schwarze@openbsd.org> @@ -969,8 +969,9 @@ print_man_foot(struct termp *p, const void *arg) term_vspace(p); term_vspace(p); term_vspace(p); - snprintf(title, BUFSIZ, "%s(%s)", meta->title, meta->msec); - datelen = term_strlen(p, meta->date); + snprintf(title, BUFSIZ, "%s(%s)", meta->title ? meta->title : "", + meta->msec ? meta->msec : ""); + datelen = term_strlen(p, meta->date ? meta->date : ""); p->flags |= TERMP_NOSPACE | TERMP_NOBREAK; p->offset = 0; @@ -986,7 +987,7 @@ print_man_foot(struct termp *p, const void *arg) if (p->offset + datelen >= p->rmargin) p->rmargin = p->offset + datelen; - term_word(p, meta->date); + term_word(p, meta->date ? meta->date : ""); term_flushln(p); p->flags &= ~TERMP_NOBREAK; @@ -1023,7 +1024,8 @@ print_man_head(struct termp *p, const void *arg) strlcpy(buf, m->vol, BUFSIZ); buflen = term_strlen(p, buf); - snprintf(title, BUFSIZ, "%s(%s)", m->title, m->msec); + snprintf(title, BUFSIZ, "%s(%s)", m->title ? m->title : "", + m->msec ? m->msec : ""); titlen = term_strlen(p, title); p->flags |= TERMP_NOBREAK | TERMP_NOSPACE; |