diff osdep/getch2.c @ 37033:de0c74742689

Fix handling of overlong termcap strings entries. The previous code would silently truncate and then read out of bounds later in a memcmp.
author reimar
date Sun, 06 Apr 2014 18:10:31 +0000
parents 6ac59489c815
children
line wrap: on
line diff
--- 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); */