To: vim_dev@googlegroups.com Subject: Patch 8.2.0537 Fcc: outbox From: Bram Moolenaar Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ------------ Patch 8.2.0537 Problem: Vim9: no check for sandbox when setting v:var. Solution: Check for sandbox. Files: src/evalvars.c, src/testdir/test_vim9_script.vim *** ../vim-8.2.0536/src/evalvars.c 2020-04-09 19:34:40.051480485 +0200 --- src/evalvars.c 2020-04-09 20:10:30.357951082 +0200 *************** *** 1978,1983 **** --- 1978,1994 ---- 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; *** ../vim-8.2.0536/src/testdir/test_vim9_script.vim 2020-04-06 21:35:02.464237765 +0200 --- src/testdir/test_vim9_script.vim 2020-04-09 20:08:42.110370432 +0200 *************** *** 170,175 **** --- 170,180 ---- 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,212 **** --- 212,220 ---- call CheckDefFailure(['let var: dict '], 'E1068:') call CheckDefFailure(['let var: dict