summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2020-04-09 20:10:55 +0200
committerBram Moolenaar <Bram@vim.org>2020-04-09 20:10:55 +0200
commitcab2767874dca019083aa371a1f3b45385dbd037 (patch)
treefa5fda2d9923f46a372a6437924ec46718765c6e
parent5da356e07359a59cf2d682908ba8592a72d5d9cd (diff)
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.c11
-rw-r--r--src/testdir/test_vim9_script.vim8
-rw-r--r--src/version.c2
3 files changed, 21 insertions, 0 deletions
diff --git a/src/evalvars.c b/src/evalvars.c
index 8af80ec0af..d32b76a87b 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 cab9f86304..4e0dc1b2ca 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 1faac96066..fece1a1039 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,