Source-Changes-HG archive

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

[src/trunk]: src/lib/libterminfo Fix some off by one issues with arraycount ....



details:   https://anonhg.NetBSD.org/src/rev/b7d4871f360d
branches:  trunk
changeset: 820590:b7d4871f360d
user:      roy <roy%NetBSD.org@localhost>
date:      Wed Jan 11 20:53:52 2017 +0000

description:
Fix some off by one issues with arraycount ..thanks coypu.

diffstat:

 lib/libterminfo/genhash   |   6 +++---
 lib/libterminfo/termcap.c |  16 ++++++++--------
 2 files changed, 11 insertions(+), 11 deletions(-)

diffs (100 lines):

diff -r 4a339624c325 -r b7d4871f360d lib/libterminfo/genhash
--- a/lib/libterminfo/genhash   Wed Jan 11 20:43:03 2017 +0000
+++ b/lib/libterminfo/genhash   Wed Jan 11 20:53:52 2017 +0000
@@ -1,5 +1,5 @@
 #!/bin/sh
-# $NetBSD: genhash,v 1.8 2011/11/02 12:09:25 roy Exp $
+# $NetBSD: genhash,v 1.9 2017/01/11 20:53:52 roy Exp $
 
 # Copyright (c) 2009, 2011 The NetBSD Foundation, Inc.
 #
@@ -65,7 +65,7 @@
 _ti_${name}id(ssize_t idx)
 {
 
-       if ((size_t)idx > __arraycount(_ti_${name}ids))
+       if ((size_t)idx >= __arraycount(_ti_${name}ids))
                return NULL;
        return _ti_${name}ids[idx];
 }
@@ -76,7 +76,7 @@
        uint32_t idx;
 
        idx = _ti_${name}hash((const unsigned char *)key, strlen(key));
-       if (idx > __arraycount(_ti_${name}ids) ||
+       if (idx >= __arraycount(_ti_${name}ids) ||
            strcmp(key, _ti_${name}ids[idx]) != 0)
                return -1;
        return idx;
diff -r 4a339624c325 -r b7d4871f360d lib/libterminfo/termcap.c
--- a/lib/libterminfo/termcap.c Wed Jan 11 20:43:03 2017 +0000
+++ b/lib/libterminfo/termcap.c Wed Jan 11 20:53:52 2017 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: termcap.c,v 1.19 2016/04/01 19:59:08 christos Exp $ */
+/* $NetBSD: termcap.c,v 1.20 2017/01/11 20:53:52 roy Exp $ */
 
 /*
  * Copyright (c) 2009 The NetBSD Foundation, Inc.
@@ -28,7 +28,7 @@
  */
 
 #include <sys/cdefs.h>
-__RCSID("$NetBSD: termcap.c,v 1.19 2016/04/01 19:59:08 christos Exp $");
+__RCSID("$NetBSD: termcap.c,v 1.20 2017/01/11 20:53:52 roy Exp $");
 
 #include <assert.h>
 #include <ctype.h>
@@ -88,7 +88,7 @@
                return 0;
 
        ind = _t_flaghash((const unsigned char *)id, strlen(id));
-       if (ind <= __arraycount(_ti_cap_flagids)) {
+       if (ind < __arraycount(_ti_cap_flagids)) {
                if (strcmp(id, _ti_cap_flagids[ind].id) == 0)
                        return cur_term->flags[_ti_cap_flagids[ind].ti];
        }
@@ -113,7 +113,7 @@
                return -1;
 
        ind = _t_numhash((const unsigned char *)id, strlen(id));
-       if (ind <= __arraycount(_ti_cap_numids)) {
+       if (ind < __arraycount(_ti_cap_numids)) {
                te = &_ti_cap_numids[ind];
                if (strcmp(id, te->id) == 0) {
                        if (!VALID_NUMERIC(cur_term->nums[te->ti]))
@@ -146,7 +146,7 @@
 
        str = NULL;
        ind = _t_strhash((const unsigned char *)id, strlen(id));
-       if (ind <= __arraycount(_ti_cap_strids)) {
+       if (ind < __arraycount(_ti_cap_strids)) {
                if (strcmp(id, _ti_cap_strids[ind].id) == 0) {
                        str = cur_term->strs[_ti_cap_strids[ind].ti];
                        if (str == NULL)
@@ -188,7 +188,7 @@
        uint32_t idx;
 
        idx = _t_flaghash((const unsigned char *)key, strlen(key));
-       if (idx <= __arraycount(_ti_cap_flagids) &&
+       if (idx < __arraycount(_ti_cap_flagids) &&
            strcmp(key, _ti_cap_flagids[idx].id) == 0)
                return _ti_flagid(_ti_cap_flagids[idx].ti);
        return key;
@@ -200,7 +200,7 @@
        uint32_t idx;
 
        idx = _t_numhash((const unsigned char *)key, strlen(key));
-       if (idx <= __arraycount(_ti_cap_numids) && 
+       if (idx < __arraycount(_ti_cap_numids) && 
            strcmp(key, _ti_cap_numids[idx].id) == 0)
                return _ti_numid(_ti_cap_numids[idx].ti);
        return key;
@@ -212,7 +212,7 @@
        uint32_t idx;
 
        idx = _t_strhash((const unsigned char *)key, strlen(key));
-       if (idx <= __arraycount(_ti_cap_strids) &&
+       if (idx < __arraycount(_ti_cap_strids) &&
            strcmp(key, _ti_cap_strids[idx].id) == 0)
                return _ti_strid(_ti_cap_strids[idx].ti);
 



Home | Main Index | Thread Index | Old Index