aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/main.c
diff options
context:
space:
mode:
authorIngo Schwarze <schwarze@openbsd.org>2010-08-08 14:45:59 +0000
committerIngo Schwarze <schwarze@openbsd.org>2010-08-08 14:45:59 +0000
commit60d06b6c8ec84a910dd17c21f2e368ae8e32dc10 (patch)
tree9938aeec70d2167093317163170ede9dc18f6f29 /main.c
parent2e99d649451cc990d3b8e8663705ad2ef1c25eb1 (diff)
downloadmandoc-60d06b6c8ec84a910dd17c21f2e368ae8e32dc10.tar.gz
mandoc-60d06b6c8ec84a910dd17c21f2e368ae8e32dc10.tar.zst
mandoc-60d06b6c8ec84a910dd17c21f2e368ae8e32dc10.zip
Make sure we really throw away non-ASCII characters.
For example, on OpenBSD without locale settings, isgraph(3) returns true for some eight-bit characters. ok kristaps@
Diffstat (limited to 'main.c')
-rw-r--r--main.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/main.c b/main.c
index 4ad45ab2..d7937f33 100644
--- a/main.c
+++ b/main.c
@@ -1,4 +1,4 @@
-/* $Id: main.c,v 1.101 2010/07/29 22:00:39 joerg Exp $ */
+/* $Id: main.c,v 1.102 2010/08/08 14:45:59 schwarze Exp $ */
/*
* Copyright (c) 2008, 2009, 2010 Kristaps Dzonsons <kristaps@bsd.lv>
* Copyright (c) 2010 Ingo Schwarze <schwarze@openbsd.org>
@@ -466,6 +466,7 @@ fdesc(struct curparse *curp)
struct buf ln, blk;
int i, pos, lnn, lnn_start, with_mmap, of;
enum rofferr re;
+ unsigned char c;
struct man *man;
struct mdoc *mdoc;
struct roff *roff;
@@ -508,8 +509,8 @@ fdesc(struct curparse *curp)
* writers: use special characters.
*/
- if ( ! isgraph((u_char)blk.buf[i]) &&
- ! isblank((u_char)blk.buf[i])) {
+ c = (unsigned char) blk.buf[i];
+ if ( ! (isascii(c) && (isgraph(c) || isblank(c)))) {
if ( ! mmsg(MANDOCERR_BADCHAR, curp,
lnn_start, pos,
"ignoring byte"))