Skip to content

Commit cab2767

Browse files
committed
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.
1 parent 5da356e commit cab2767

3 files changed

Lines changed: 21 additions & 0 deletions

File tree

src/evalvars.c

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1978,6 +1978,17 @@ set_vim_var_tv(int idx, typval_T *tv)
19781978
clear_tv(tv);
19791979
return FAIL;
19801980
}
1981+
// VV_RO is also checked when compiling, but let's check here as well.
1982+
if (vimvars[idx].vv_flags & VV_RO)
1983+
{
1984+
semsg(_(e_readonlyvar), vimvars[idx].vv_name);
1985+
return FAIL;
1986+
}
1987+
if (sandbox && (vimvars[idx].vv_flags & VV_RO_SBX))
1988+
{
1989+
semsg(_(e_readonlysbx), vimvars[idx].vv_name);
1990+
return FAIL;
1991+
}
19811992
clear_tv(&vimvars[idx].vv_di.di_tv);
19821993
vimvars[idx].vv_di.di_tv = *tv;
19831994
return OK;

src/testdir/test_vim9_script.vim

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -170,6 +170,11 @@ def Test_assignment_default()
170170
assert_equal(5678, nr)
171171
enddef
172172

173+
def Mess(): string
174+
v:foldstart = 123
175+
return 'xxx'
176+
enddef
177+
173178
func Test_assignment_failure()
174179
call CheckDefFailure(['let var=234'], 'E1004:')
175180
call CheckDefFailure(['let var =234'], 'E1004:')
@@ -207,6 +212,9 @@ func Test_assignment_failure()
207212

208213
call CheckDefFailure(['let var: dict <number>'], 'E1068:')
209214
call CheckDefFailure(['let var: dict<number'], 'E1009:')
215+
216+
call assert_fails('s/^/\=Mess()/n', 'E794:')
217+
call CheckDefFailure(['let var: dict<number'], 'E1009:')
210218
endfunc
211219

212220
func Test_wrong_type()

src/version.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -738,6 +738,8 @@ static char *(features[]) =
738738

739739
static int included_patches[] =
740740
{ /* Add new patch number below this line */
741+
/**/
742+
537,
741743
/**/
742744
536,
743745
/**/

0 commit comments

Comments
 (0)