summaryrefslogtreecommitdiffstats
path: root/mdoc.c
diff options
context:
space:
mode:
authorKristaps Dzonsons <kristaps@bsd.lv>2010-01-07 10:24:43 +0000
committerKristaps Dzonsons <kristaps@bsd.lv>2010-01-07 10:24:43 +0000
commitad3053cbf11882fc2478adedbd82aadb0b6f9ca9 (patch)
tree18b2912353652906bf4d1c4eb4baf77b0faf88ed /mdoc.c
parent65a5d430e92f93dd778bf5b4aaabe7e52238d532 (diff)
downloadmandoc-ad3053cbf11882fc2478adedbd82aadb0b6f9ca9.tar.gz
Check for white-space at the end of free-form text. Lack of check spotted by Jason McIntyre.
Diffstat (limited to 'mdoc.c')
-rw-r--r--mdoc.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/mdoc.c b/mdoc.c
index 9c24880e..0d3925ff 100644
--- a/mdoc.c
+++ b/mdoc.c
@@ -581,6 +581,7 @@ static int
parsetext(struct mdoc *m, int line, char *buf)
{
int i, j;
+ char sv;
if (SEC_NONE == m->lastnamed)
return(mdoc_perr(m, line, 0, ETEXTPROL));
@@ -614,15 +615,29 @@ parsetext(struct mdoc *m, int line, char *buf)
if (i && ' ' == buf[i] && '\\' == buf[i - 1])
continue;
+ sv = buf[i];
buf[i++] = '\0';
if ( ! pstring(m, line, j, &buf[j], (size_t)(i - j)))
return(0);
+ /* Trailing whitespace? Check at overwritten byte. */
+
+ if (' ' == sv && '\0' == buf[i])
+ if ( ! mdoc_pwarn(m, line, i - 1, ETAILWS))
+ return(0);
+
for ( ; ' ' == buf[i]; i++)
/* Skip trailing whitespace. */ ;
j = i;
+
+ /* Trailing whitespace? */
+
+ if (' ' == buf[i - 1] && '\0' == buf[i])
+ if ( ! mdoc_pwarn(m, line, i - 1, ETAILWS))
+ return(0);
+
if ('\0' == buf[i])
break;
}