{
char_u *str;
+ if (check_secure())
+ return;
+
if (in_vim9script() && check_for_string_arg(argvars, 0) == FAIL)
return;
EX_EXTRA|EX_NOTRLCOM|EX_EXPR_ARG|EX_SBOXOK|EX_CMDWIN|EX_LOCK_OK,
ADDR_NONE),
EXCMD(CMD_echoconsole, "echoconsole", ex_execute,
- EX_EXTRA|EX_NOTRLCOM|EX_EXPR_ARG|EX_SBOXOK|EX_CMDWIN|EX_LOCK_OK,
+ EX_EXTRA|EX_NOTRLCOM|EX_EXPR_ARG|EX_CMDWIN|EX_LOCK_OK,
ADDR_NONE),
EXCMD(CMD_echon, "echon", ex_echo,
EX_EXTRA|EX_NOTRLCOM|EX_EXPR_ARG|EX_SBOXOK|EX_CMDWIN|EX_LOCK_OK,
rettv->v_type = VAR_STRING;
rettv->vval.v_string = NULL;
+ if (check_secure())
+ return;
+
if (argvars[0].v_type != VAR_STRING)
{
// Returning an empty string means it failed.
if (rettv_list_alloc(rettv) == FAIL)
return;
+ if (check_secure())
+ return;
if (in_vim9script()
&& (check_for_string_arg(argvars, 0) == FAIL
if (rettv_list_alloc(rettv) == FAIL)
return;
+ if (check_secure())
+ return;
if (in_vim9script()
&& (check_for_string_arg(argvars, 0) == FAIL
void
f_readblob(typval_T *argvars, typval_T *rettv)
{
+ if (check_secure())
+ return;
+
if (in_vim9script()
&& (check_for_string_arg(argvars, 0) == FAIL
|| check_for_opt_number_arg(argvars, 1) == FAIL
void
f_readfile(typval_T *argvars, typval_T *rettv)
{
+ if (check_secure())
+ return;
+
if (in_vim9script()
&& (check_for_nonempty_string_arg(argvars, 0) == FAIL
|| check_for_opt_string_arg(argvars, 1) == FAIL
if has('unix')
call assert_fails('cd `pwd`', 'E48:')
endif
+ call assert_fails("call echoraw('test')", 'E48:')
+ call assert_fails("echoconsole 'test'", 'E48:')
+ call assert_fails("call readfile('Xsomefile')", 'E48:')
+ call assert_fails("call readblob('Xsomefile')", 'E48:')
+ call assert_fails("call readdir('.')", 'E48:')
+ call assert_fails("call readdirex('.')", 'E48:')
+ call assert_fails("call chdir('.')", 'E48:')
" some options cannot be changed in a sandbox
call assert_fails('set exrc', 'E48:')
call assert_fails('set cdpath', 'E48:')
static int included_patches[] =
{ /* Add new patch number below this line */
+/**/
+ 341,
/**/
340,
/**/