]> granicus.if.org Git - vim/commitdiff
patch 8.2.0537: Vim9: no check for sandbox when setting v:var v8.2.0537
authorBram Moolenaar <Bram@vim.org>
Thu, 9 Apr 2020 18:10:55 +0000 (20:10 +0200)
committerBram Moolenaar <Bram@vim.org>
Thu, 9 Apr 2020 18:10:55 +0000 (20:10 +0200)
Problem:    Vim9: no check for sandbox when setting v:var.
Solution:   Check for sandbox.

src/evalvars.c
src/testdir/test_vim9_script.vim
src/version.c

index 8af80ec0afe92e1f1283ddd687744214415b2a59..d32b76a87b79f7f72d6fc0ac009705fa67170066 100644 (file)
@@ -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;
index cab9f863049a07e184b44e473ce71c0e94e9b8a2..4e0dc1b2ca8fceea0203e1919a9c089756c9a223 100644 (file)
@@ -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()
index 1faac9606698e7bfd63e4bcbdf399363ec154c73..fece1a10396bff64a07c16a014f010fd0fcd5165 100644 (file)
@@ -738,6 +738,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    537,
 /**/
     536,
 /**/