File CVE-2019-17594.patch of Package ncurses.25104

Based on ncurses 6.1 - patch 20191012
From: Thomas E. Dickey

 + check for invalid hashcode in _nc_find_type_entry and
   _nc_find_name_entry.
 + check for invalid hashcode in _nc_find_entry.

---
 ncurses/tinfo/comp_hash.c |    8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

--- ncurses/tinfo/comp_hash.c
+++ ncurses/tinfo/comp_hash.c	2019-10-12 16:32:13.000000000 +0000
@@ -63,7 +63,9 @@ _nc_find_entry(const char *string,
 
     hashvalue = data->hash_of(string);
 
-    if (data->table_data[hashvalue] >= 0) {
+    if (hashvalue >= 0
+	&& (unsigned) hashvalue < data->table_size
+	&& data->table_data[hashvalue] >= 0) {
 
 	real_table = _nc_get_table(termcap);
 	ptr = real_table + data->table_data[hashvalue];
@@ -96,7 +98,9 @@ _nc_find_type_entry(const char *string,
     const HashData *data = _nc_get_hash_info(termcap);
     int hashvalue = data->hash_of(string);
 
-    if (data->table_data[hashvalue] >= 0) {
+    if (hashvalue >= 0
+	&& (unsigned) hashvalue < data->table_size
+	&& data->table_data[hashvalue] >= 0) {
 	const struct name_table_entry *const table = _nc_get_table(termcap);
 
 	ptr = table + data->table_data[hashvalue];
openSUSE Build Service is sponsored by