]> git.ipfire.org Git - thirdparty/vim.git/commitdiff
patch 9.0.1070: reading beyond array size v9.0.1070
authorBram Moolenaar <Bram@vim.org>
Sat, 17 Dec 2022 15:35:43 +0000 (15:35 +0000)
committerBram Moolenaar <Bram@vim.org>
Sat, 17 Dec 2022 15:35:43 +0000 (15:35 +0000)
Problem:    Reading beyond array size.
Solution:   Only use name[0] and name[1], do not use "name" as a string.

src/term.c
src/version.c

index b2b14e3d9ff8522f17de29f8bd1458c79aaf7b1f..7483974ac1a0101f1679362b0ba7c7e806484326 100644 (file)
@@ -4389,7 +4389,8 @@ clear_termcodes(void)
 #define ATC_FROM_TERM 55
 
 /*
- * Add a new entry to the list of terminal codes.
+ * Add a new entry for "name[2]" to the list of terminal codes.
+ * Note that "name" may not have a terminating NUL.
  * The list is kept alphabetical for ":set termcap"
  * "flags" is TRUE when replacing 7-bit by 8-bit controls is desired.
  * "flags" can also be ATC_FROM_TERM for got_code_from_term().
@@ -4497,7 +4498,8 @@ add_termcode(char_u *name, char_u *string, int flags)
                    {
                        // They are equal but for the ";*": don't add it.
 #ifdef FEAT_EVAL
-                       ch_log(NULL, "Termcap entry %s did not change", name);
+                       ch_log(NULL, "Termcap entry %c%c did not change",
+                                                            name[0], name[1]);
 #endif
                        vim_free(s);
                        return;
@@ -4507,8 +4509,8 @@ add_termcode(char_u *name, char_u *string, int flags)
                {
                    // Replace old code.
 #ifdef FEAT_EVAL
-                   ch_log(NULL, "Termcap entry %s was: %s",
-                                                     name, termcodes[i].code);
+                   ch_log(NULL, "Termcap entry %c%c was: %s",
+                                         name[0], name[1], termcodes[i].code);
 #endif
                    vim_free(termcodes[i].code);
                    --tc_len;
@@ -4528,7 +4530,7 @@ add_termcode(char_u *name, char_u *string, int flags)
     }
 
 #ifdef FEAT_EVAL
-    ch_log(NULL, "%s termcap entry %s to %s", action, name, s);
+    ch_log(NULL, "%s termcap entry %c%c to %s", action, name[0], name[1], s);
 #endif
     termcodes[i].name[0] = name[0];
     termcodes[i].name[1] = name[1];
index 89d71523ada5896ff6603f8776abd05d3834bbcd..cd52fed8bb61fcecc5a3c0f56f195103f5370188 100644 (file)
@@ -695,6 +695,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    1070,
 /**/
     1069,
 /**/