Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/external/historical/nawk/dist Do not use index out of bounds...



details:   https://anonhg.NetBSD.org/src/rev/7301e8be0509
branches:  trunk
changeset: 362468:7301e8be0509
user:      kamil <kamil%NetBSD.org@localhost>
date:      Tue Jun 12 13:24:28 2018 +0000

description:
Do not use index out of bounds in nawk

$ awk '{w=$1}' < /dev/null
/public/src.git/external/historical/nawk/bin/../dist/lex.c:476:16: runtime error: index -1 out of bounds for type 'const Keyword [46]'

There used to be documented a bug in the code that index ouf of bounds
can in theory fault (by daniel barrett).

Before assigning the pointer, first check for the index whether it's not
not -1. This was a suggested solution in the comment in the code.

The sanitizer is overcautious as this pointer wasn't dereferenced, but
fix is nonetheless.

Sponsored by <The NetBSD Foundation>

diffstat:

 external/historical/nawk/dist/lex.c |  4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

diffs (15 lines):

diff -r 52f122089d0c -r 7301e8be0509 external/historical/nawk/dist/lex.c
--- a/external/historical/nawk/dist/lex.c       Tue Jun 12 13:18:48 2018 +0000
+++ b/external/historical/nawk/dist/lex.c       Tue Jun 12 13:24:28 2018 +0000
@@ -472,9 +472,9 @@
        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:



Home | Main Index | Thread Index | Old Index