# HG changeset patch # User reimar # Date 1396807831 0 # Node ID de0c74742689d9ac60679a6c661fbb77c28c39cb # Parent 4c7ab9a4f3cd8829a06fcad87e386ba2f2ce5dc8 Fix handling of overlong termcap strings entries. The previous code would silently truncate and then read out of bounds later in a memcmp. diff -r 4c7ab9a4f3cd -r de0c74742689 osdep/getch2.c --- a/osdep/getch2.c Sun Apr 06 17:57:33 2014 +0000 +++ b/osdep/getch2.c Sun Apr 06 18:10:31 2014 +0000 @@ -100,7 +100,12 @@ if(!p) return; if(getch2_key_db>=MAX_KEYS) return; getch2_keys[getch2_key_db].len=strlen(p); - strncpy(getch2_keys[getch2_key_db].chars,p,8); + if (getch2_keys[getch2_key_db].len >= sizeof(getch2_keys[getch2_key_db].chars)) + { + printf("Key string entry more than 7 characters, ignoring\n"); + return; + } + strcpy(getch2_keys[getch2_key_db].chars,p); getch2_keys[getch2_key_db].code=code; ++getch2_key_db; /* printf("%s=%s\n",id,p); */