• R/O
  • SSH

vim: Commit

Mirror of the Vim source from https://github.com/vim/vim


Commit MetaInfo

Revision2da1753e6a4a0f294b88706c4b6d75550be852a0 (tree)
Time2022-08-15 05:30:02
AuthorBram Moolenaar <Bram@vim....>
CommiterBram Moolenaar

Log Message

patch 9.0.0211: invalid memory access when compiling :lockvar

Commit: https://github.com/vim/vim/commit/d1d8f6bacb489036d0fd479c9dd3c0102c988889
Author: Bram Moolenaar <Bram@vim.org>
Date: Sun Aug 14 21:28:32 2022 +0100

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.

Change Summary

Incremental Difference

diff -r 71f1aa981b8e -r 2da1753e6a4a src/testdir/test_vim9_cmd.vim
--- a/src/testdir/test_vim9_cmd.vim Sun Aug 14 20:45:03 2022 +0200
+++ b/src/testdir/test_vim9_cmd.vim Sun Aug 14 22:30:02 2022 +0200
@@ -1737,6 +1737,15 @@
17371737 UnLockIt()
17381738 END
17391739 v9.CheckScriptFailure(lines, 'E46', 1)
1740+
1741+ lines =<< trim END
1742+ def _()
1743+ s:0([], s:0)
1744+ lockv
1745+ enddef
1746+ defcomp
1747+ END
1748+ v9.CheckScriptFailure(lines, 'E179', 2)
17401749 enddef
17411750
17421751 def Test_substitute_expr()
diff -r 71f1aa981b8e -r 2da1753e6a4a src/version.c
--- a/src/version.c Sun Aug 14 20:45:03 2022 +0200
+++ b/src/version.c Sun Aug 14 22:30:02 2022 +0200
@@ -736,6 +736,8 @@
736736 static int included_patches[] =
737737 { /* Add new patch number below this line */
738738 /**/
739+ 211,
740+/**/
739741 210,
740742 /**/
741743 209,
diff -r 71f1aa981b8e -r 2da1753e6a4a src/vim9cmds.c
--- a/src/vim9cmds.c Sun Aug 14 20:45:03 2022 +0200
+++ b/src/vim9cmds.c Sun Aug 14 22:30:02 2022 +0200
@@ -188,10 +188,17 @@
188188 size_t len;
189189 char_u *buf;
190190 isntype_T isn = ISN_EXEC;
191+ char *cmd = eap->cmdidx == CMD_lockvar ? "lockvar" : "unlockvar";
191192
192193 if (cctx->ctx_skip == SKIP_YES)
193194 return OK;
194195
196+ if (*p == NUL)
197+ {
198+ semsg(_(e_argument_required_for_str), cmd);
199+ return FAIL;
200+ }
201+
195202 // Cannot use :lockvar and :unlockvar on local variables.
196203 if (p[1] != ':')
197204 {
@@ -223,8 +230,6 @@
223230 ret = FAIL;
224231 else
225232 {
226- char *cmd = eap->cmdidx == CMD_lockvar ? "lockvar" : "unlockvar";
227-
228233 if (deep < 0)
229234 vim_snprintf((char *)buf, len, "%s! %s", cmd, p);
230235 else
Show on old repository browser