aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/mdoc_validate.c
diff options
context:
space:
mode:
authorIngo Schwarze <schwarze@openbsd.org>2018-08-16 15:05:34 +0000
committerIngo Schwarze <schwarze@openbsd.org>2018-08-16 15:05:34 +0000
commit99622f1b4d341ddc21f96b55ae3addf4013cfb97 (patch)
treeef1b993efba82eef8656ad17b5d38c823630453a /mdoc_validate.c
parent9d418b3494affa0a03b36bef60ebd4f9074c194b (diff)
downloadmandoc-99622f1b4d341ddc21f96b55ae3addf4013cfb97.tar.gz
mandoc-99622f1b4d341ddc21f96b55ae3addf4013cfb97.tar.zst
mandoc-99622f1b4d341ddc21f96b55ae3addf4013cfb97.zip
Do not calculate a pointer to a memory location before the beginning of
a static array. Christos Zoulas, Robert Elz, and Andreas Gustafsson point out that is undefined behaviour by the C standard even if we never access the pointer.
Diffstat (limited to 'mdoc_validate.c')
-rw-r--r--mdoc_validate.c7
1 files changed, 3 insertions, 4 deletions
diff --git a/mdoc_validate.c b/mdoc_validate.c
index b36d3c0a..816be407 100644
--- a/mdoc_validate.c
+++ b/mdoc_validate.c
@@ -1,4 +1,4 @@
-/* $Id: mdoc_validate.c,v 1.360 2018/08/01 16:00:58 schwarze Exp $ */
+/* $Id: mdoc_validate.c,v 1.361 2018/08/16 15:05:34 schwarze Exp $ */
/*
* Copyright (c) 2008-2012 Kristaps Dzonsons <kristaps@bsd.lv>
* Copyright (c) 2010-2018 Ingo Schwarze <schwarze@openbsd.org>
@@ -116,7 +116,7 @@ static void post_useless(POST_ARGS);
static void post_xr(POST_ARGS);
static void post_xx(POST_ARGS);
-static const v_post __mdoc_valids[MDOC_MAX - MDOC_Dd] = {
+static const v_post mdoc_valids[MDOC_MAX - MDOC_Dd] = {
post_dd, /* Dd */
post_dt, /* Dt */
post_os, /* Os */
@@ -238,7 +238,6 @@ static const v_post __mdoc_valids[MDOC_MAX - MDOC_Dd] = {
NULL, /* %U */
NULL, /* Ta */
};
-static const v_post *const mdoc_valids = __mdoc_valids - MDOC_Dd;
#define RSORD_MAX 14 /* Number of `Rs' blocks. */
@@ -357,7 +356,7 @@ mdoc_node_validate(struct roff_man *mdoc)
}
assert(n->tok >= MDOC_Dd && n->tok < MDOC_MAX);
- p = mdoc_valids + n->tok;
+ p = mdoc_valids + (n->tok - MDOC_Dd);
if (*p)
(*p)(mdoc);
if (mdoc->last == n)