mirror of
https://github.com/vim/vim.git
synced 2025-09-23 03:43:49 -04:00
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:
12
src/typval.c
12
src/typval.c
@@ -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 == '}'))
|
||||
{
|
||||
|
Reference in New Issue
Block a user