diff src/evalvars.c @ 19962:12fa79cac39b v8.2.0537

patch 8.2.0537: Vim9: no check for sandbox when setting v:var Commit: https://github.com/vim/vim/commit/cab2767874dca019083aa371a1f3b45385dbd037 Author: Bram Moolenaar <Bram@vim.org> Date: Thu Apr 9 20:10:55 2020 +0200 patch 8.2.0537: Vim9: no check for sandbox when setting v:var Problem: Vim9: no check for sandbox when setting v:var. Solution: Check for sandbox.
author Bram Moolenaar <Bram@vim.org>
date Thu, 09 Apr 2020 20:15:04 +0200
parents 3c11b9f6fa03
children 04ef2ccf2519
line wrap: on
line diff
--- 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;