diff options
author | Bram Moolenaar <Bram@vim.org> | 2020-04-09 20:10:55 +0200 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2020-04-09 20:10:55 +0200 |
commit | cab2767874dca019083aa371a1f3b45385dbd037 (patch) | |
tree | fa5fda2d9923f46a372a6437924ec46718765c6e | |
parent | 5da356e07359a59cf2d682908ba8592a72d5d9cd (diff) | |
download | vim-git-cab2767874dca019083aa371a1f3b45385dbd037.tar.gz |
patch 8.2.0537: Vim9: no check for sandbox when setting v:varv8.2.0537
Problem: Vim9: no check for sandbox when setting v:var.
Solution: Check for sandbox.
-rw-r--r-- | src/evalvars.c | 11 | ||||
-rw-r--r-- | src/testdir/test_vim9_script.vim | 8 | ||||
-rw-r--r-- | src/version.c | 2 |
3 files changed, 21 insertions, 0 deletions
diff --git a/src/evalvars.c b/src/evalvars.c index 8af80ec0a..d32b76a87 100644 --- a/src/evalvars.c +++ b/src/evalvars.c @@ -1978,6 +1978,17 @@ set_vim_var_tv(int idx, typval_T *tv) clear_tv(tv); return FAIL; } + // VV_RO is also checked when compiling, but let's check here as well. + if (vimvars[idx].vv_flags & VV_RO) + { + semsg(_(e_readonlyvar), vimvars[idx].vv_name); + return FAIL; + } + if (sandbox && (vimvars[idx].vv_flags & VV_RO_SBX)) + { + semsg(_(e_readonlysbx), vimvars[idx].vv_name); + return FAIL; + } clear_tv(&vimvars[idx].vv_di.di_tv); vimvars[idx].vv_di.di_tv = *tv; return OK; diff --git a/src/testdir/test_vim9_script.vim b/src/testdir/test_vim9_script.vim index cab9f8630..4e0dc1b2c 100644 --- a/src/testdir/test_vim9_script.vim +++ b/src/testdir/test_vim9_script.vim @@ -170,6 +170,11 @@ def Test_assignment_default() assert_equal(5678, nr) enddef +def Mess(): string + v:foldstart = 123 + return 'xxx' +enddef + func Test_assignment_failure() call CheckDefFailure(['let var=234'], 'E1004:') call CheckDefFailure(['let var =234'], 'E1004:') @@ -207,6 +212,9 @@ func Test_assignment_failure() call CheckDefFailure(['let var: dict <number>'], 'E1068:') call CheckDefFailure(['let var: dict<number'], 'E1009:') + + call assert_fails('s/^/\=Mess()/n', 'E794:') + call CheckDefFailure(['let var: dict<number'], 'E1009:') endfunc func Test_wrong_type() diff --git a/src/version.c b/src/version.c index 1faac9606..fece1a103 100644 --- a/src/version.c +++ b/src/version.c @@ -739,6 +739,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 537, +/**/ 536, /**/ 535, |