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 /src/evalvars.c | |
parent | 5da356e07359a59cf2d682908ba8592a72d5d9cd (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.
Diffstat (limited to 'src/evalvars.c')
-rw-r--r-- | src/evalvars.c | 11 |
1 files changed, 11 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; |