From ad9bd2f40a89ec9533b92254b86a756cf4f40fd4 Mon Sep 17 00:00:00 2001 From: Alexander Richardson Date: Tue, 10 Sep 2019 07:54:53 +0100 Subject: [PATCH] Avoid creating an out-of-bounds pointer in word() (#48) As it is never dereferenced in the n == -1 case it shouldn't cause any problems. However, UBSAN complains about this, so it is required to run the tests when compiling with -fsanitize=undefined. --- lex.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/lex.c b/lex.c index 93acb53..8be9cfa 100644 --- a/lex.c +++ b/lex.c @@ -461,9 +461,8 @@ int word(char *w) int c, n; n = binsearch(w, keywords, sizeof(keywords)/sizeof(keywords[0])); -/* BUG: this ought to be inside the if; in theory could fault (daniel barrett) */ - kp = keywords + n; if (n != -1) { /* found in table */ + kp = keywords + n; yylval.i = kp->sub; switch (kp->type) { /* special handling */ case BLTIN: