aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/man_term.c
diff options
context:
space:
mode:
authorJoerg Sonnenberger <joerg@netbsd.org>2011-11-18 17:04:06 +0000
committerJoerg Sonnenberger <joerg@netbsd.org>2011-11-18 17:04:06 +0000
commitb5a40631c2897991e048c3dca0ec5e35e1c40532 (patch)
tree99eb00fa1c7079e4cabfb494ba880d47d36b7c84 /man_term.c
parentbd4bbc720d144ab9137b75e4e25b39ec527f5c4c (diff)
downloadmandoc-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.
Diffstat (limited to 'man_term.c')
-rw-r--r--man_term.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/man_term.c b/man_term.c
index 73178879..febd60af 100644
--- a/man_term.c
+++ b/man_term.c
@@ -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;