forked from aniani/vim
patch 9.0.1070: reading beyond array size
Problem: Reading beyond array size. Solution: Only use name[0] and name[1], do not use "name" as a string.
This commit is contained in:
12
src/term.c
12
src/term.c
@@ -4389,7 +4389,8 @@ clear_termcodes(void)
|
|||||||
#define ATC_FROM_TERM 55
|
#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"
|
* The list is kept alphabetical for ":set termcap"
|
||||||
* "flags" is TRUE when replacing 7-bit by 8-bit controls is desired.
|
* "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().
|
* "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.
|
// They are equal but for the ";*": don't add it.
|
||||||
#ifdef FEAT_EVAL
|
#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
|
#endif
|
||||||
vim_free(s);
|
vim_free(s);
|
||||||
return;
|
return;
|
||||||
@@ -4507,8 +4509,8 @@ add_termcode(char_u *name, char_u *string, int flags)
|
|||||||
{
|
{
|
||||||
// Replace old code.
|
// Replace old code.
|
||||||
#ifdef FEAT_EVAL
|
#ifdef FEAT_EVAL
|
||||||
ch_log(NULL, "Termcap entry %s was: %s",
|
ch_log(NULL, "Termcap entry %c%c was: %s",
|
||||||
name, termcodes[i].code);
|
name[0], name[1], termcodes[i].code);
|
||||||
#endif
|
#endif
|
||||||
vim_free(termcodes[i].code);
|
vim_free(termcodes[i].code);
|
||||||
--tc_len;
|
--tc_len;
|
||||||
@@ -4528,7 +4530,7 @@ add_termcode(char_u *name, char_u *string, int flags)
|
|||||||
}
|
}
|
||||||
|
|
||||||
#ifdef FEAT_EVAL
|
#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
|
#endif
|
||||||
termcodes[i].name[0] = name[0];
|
termcodes[i].name[0] = name[0];
|
||||||
termcodes[i].name[1] = name[1];
|
termcodes[i].name[1] = name[1];
|
||||||
|
@@ -695,6 +695,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
1070,
|
||||||
/**/
|
/**/
|
||||||
1069,
|
1069,
|
||||||
/**/
|
/**/
|
||||||
|
Reference in New Issue
Block a user