0
0
mirror of https://github.com/vim/vim.git synced 2025-09-25 03:54:15 -04:00

patch 9.0.0211: invalid memory access when compiling :lockvar

Problem:    Invalid memory access when compiling :lockvar.
Solution:   Don't read past the end of the line.
This commit is contained in:
Bram Moolenaar
2022-08-14 21:28:32 +01:00
parent c3a483fc3c
commit d1d8f6bacb
3 changed files with 18 additions and 2 deletions

View File

@@ -1737,6 +1737,15 @@ def Test_lockvar()
UnLockIt()
END
v9.CheckScriptFailure(lines, 'E46', 1)
lines =<< trim END
def _()
s:0([], s:0)
lockv
enddef
defcomp
END
v9.CheckScriptFailure(lines, 'E179', 2)
enddef
def Test_substitute_expr()

View File

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

View File

@@ -188,10 +188,17 @@ compile_lock_unlock(
size_t len;
char_u *buf;
isntype_T isn = ISN_EXEC;
char *cmd = eap->cmdidx == CMD_lockvar ? "lockvar" : "unlockvar";
if (cctx->ctx_skip == SKIP_YES)
return OK;
if (*p == NUL)
{
semsg(_(e_argument_required_for_str), cmd);
return FAIL;
}
// Cannot use :lockvar and :unlockvar on local variables.
if (p[1] != ':')
{
@@ -223,8 +230,6 @@ compile_lock_unlock(
ret = FAIL;
else
{
char *cmd = eap->cmdidx == CMD_lockvar ? "lockvar" : "unlockvar";
if (deep < 0)
vim_snprintf((char *)buf, len, "%s! %s", cmd, p);
else