1
0
forked from aniani/vim

patch 9.0.0104: going beyond allocated memory when evaluating string constant

Problem:    Going beyond allocated memory when evaluating string constant.
Solution:   Properly skip over <Key> form.
This commit is contained in:
Bram Moolenaar
2022-07-29 15:28:27 +01:00
parent efffa5360e
commit 1e56bda904
3 changed files with 19 additions and 0 deletions

View File

@@ -617,4 +617,9 @@ func Test_modified_char_no_escape_special()
nunmap <M->
endfunc
func Test_eval_string_in_special_key()
" this was using the '{' inside <> as the start of an interpolated string
silent! echo 0{1-$"\<S--{>n|%
endfunc
" vim: shiftwidth=2 sts=2 expandtab

View File

@@ -2090,7 +2090,19 @@ eval_string(char_u **arg, typval_T *rettv, int evaluate, int interpolate)
// to 9 characters (6 for the char and 3 for a modifier):
// reserve space for 5 extra.
if (*p == '<')
{
int modifiers = 0;
int flags = FSK_KEYCODE | FSK_IN_STRING;
extra += 5;
// Skip to the '>' to avoid using '{' inside for string
// interpolation.
if (p[1] != '*')
flags |= FSK_SIMPLIFY;
if (find_special_key(&p, &modifiers, flags, NULL) != 0)
--p; // leave "p" on the ">"
}
}
else if (interpolate && (*p == '{' || *p == '}'))
{

View File

@@ -735,6 +735,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
104,
/**/
103,
/**/