summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--runtime/doc/starting.txt8
-rw-r--r--src/evalfunc.c6
-rw-r--r--src/version.c2
3 files changed, 12 insertions, 4 deletions
diff --git a/runtime/doc/starting.txt b/runtime/doc/starting.txt
index f7e98c7bef..1e7daa6b51 100644
--- a/runtime/doc/starting.txt
+++ b/runtime/doc/starting.txt
@@ -1,4 +1,4 @@
-*starting.txt* For Vim version 9.0. Last change: 2023 Oct 17
+*starting.txt* For Vim version 9.0. Last change: 2023 Oct 20
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -249,10 +249,10 @@ a slash. Thus "-R" means recovery and "-/R" readonly.
*-Z* *restricted-mode* *E145* *E981*
-Z Restricted mode. All commands that make use of an external
shell are disabled. This includes suspending with CTRL-Z,
- ":sh", filtering, the system() function, backtick expansion
+ ":sh", filtering, the |system()| function, backtick expansion
and libcall().
- Also disallowed are delete(), rename(), mkdir(), job_start(),
- etc.
+ Also disallowed are |delete()|, |rename()|, |mkdir()|,
+ |job_start()|, |setenv()| etc.
Interfaces, such as Python, Ruby and Lua, are also disabled,
since they could be used to execute shell commands. Perl uses
the Safe module.
diff --git a/src/evalfunc.c b/src/evalfunc.c
index f9b81c6054..9e4e26ba0c 100644
--- a/src/evalfunc.c
+++ b/src/evalfunc.c
@@ -9723,6 +9723,12 @@ f_setenv(typval_T *argvars, typval_T *rettv UNUSED)
if (in_vim9script() && check_for_string_arg(argvars, 0) == FAIL)
return;
+ // seting an environment variable may be dangerous, e.g. you could
+ // setenv GCONV_PATH=/tmp and then have iconv() unexpectedly call
+ // a shell command using some shared library:
+ if (check_restricted() || check_secure())
+ return;
+
name = tv_get_string_buf(&argvars[0], namebuf);
if (argvars[1].v_type == VAR_SPECIAL
&& argvars[1].vval.v_number == VVAL_NULL)
diff --git a/src/version.c b/src/version.c
index 890e92c7cb..2bcdfc9736 100644
--- a/src/version.c
+++ b/src/version.c
@@ -705,6 +705,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 2070,
+/**/
2069,
/**/
2068,