summaryrefslogtreecommitdiff
path: root/data/vim/patches/8.1.0881
diff options
context:
space:
mode:
Diffstat (limited to 'data/vim/patches/8.1.0881')
-rw-r--r--data/vim/patches/8.1.0881474
1 files changed, 0 insertions, 474 deletions
diff --git a/data/vim/patches/8.1.0881 b/data/vim/patches/8.1.0881
deleted file mode 100644
index 2f24f2b40..000000000
--- a/data/vim/patches/8.1.0881
+++ /dev/null
@@ -1,474 +0,0 @@
-To: vim_dev@googlegroups.com
-Subject: Patch 8.1.0881
-Fcc: outbox
-From: Bram Moolenaar <Bram@moolenaar.net>
-Mime-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-------------
-
-Patch 8.1.0881
-Problem: Can execute shell commands in rvim through interfaces.
-Solution: Disable using interfaces in restricted mode. Allow for writing
- file with writefile(), histadd() and a few others.
-Files: runtime/doc/starting.txt, src/if_perl.xs, src/if_cmds.h,
- src/ex_cmds.c, src/ex_docmd.c, src/evalfunc.c,
- src/testdir/test_restricted.vim, src/testdir/Make_all.mak
-
-
-*** ../vim-8.1.0880/runtime/doc/starting.txt 2018-05-17 13:42:03.000000000 +0200
---- runtime/doc/starting.txt 2019-02-08 13:56:44.035120636 +0100
-***************
-*** 248,259 ****
- changes and writing.
- {not in Vi}
-
-! *-Z* *restricted-mode* *E145*
- -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,
-! delete(), rename(), mkdir(), writefile(), libcall(),
-! job_start(), etc.
- {not in Vi}
-
- *-g*
---- 248,265 ----
- changes and writing.
- {not in Vi}
-
-! *-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
-! and libcall().
-! Also disallowed are delete(), rename(), mkdir(), job_start(),
-! 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.
-! Note that the user may still find a loophole to execute a
-! shell command, it has only been made difficult.
- {not in Vi}
-
- *-g*
-*** ../vim-8.1.0880/src/if_perl.xs 2019-01-19 17:43:03.413449172 +0100
---- src/if_perl.xs 2019-02-08 13:27:55.445028617 +0100
-***************
-*** 971,976 ****
---- 971,977 ----
- #ifdef DYNAMIC_PERL
- static char *e_noperl = N_("Sorry, this command is disabled: the Perl library could not be loaded.");
- #endif
-+ static char *e_perlsandbox = N_("E299: Perl evaluation forbidden in sandbox without the Safe module");
-
- /*
- * ":perl"
-***************
-*** 1019,1031 ****
- vim_free(script);
- }
-
-! #ifdef HAVE_SANDBOX
-! if (sandbox)
- {
- safe = perl_get_sv("VIM::safe", FALSE);
- # ifndef MAKE_TEST /* avoid a warning for unreachable code */
- if (safe == NULL || !SvTRUE(safe))
-! emsg(_("E299: Perl evaluation forbidden in sandbox without the Safe module"));
- else
- # endif
- {
---- 1020,1031 ----
- vim_free(script);
- }
-
-! if (sandbox || secure)
- {
- safe = perl_get_sv("VIM::safe", FALSE);
- # ifndef MAKE_TEST /* avoid a warning for unreachable code */
- if (safe == NULL || !SvTRUE(safe))
-! emsg(_(e_perlsandbox));
- else
- # endif
- {
-***************
-*** 1037,1043 ****
- }
- }
- else
-- #endif
- perl_eval_sv(sv, G_DISCARD | G_NOARGS);
-
- SvREFCNT_dec(sv);
---- 1037,1042 ----
-***************
-*** 1298,1310 ****
- ENTER;
- SAVETMPS;
-
-! #ifdef HAVE_SANDBOX
-! if (sandbox)
- {
- safe = get_sv("VIM::safe", FALSE);
- # ifndef MAKE_TEST /* avoid a warning for unreachable code */
- if (safe == NULL || !SvTRUE(safe))
-! emsg(_("E299: Perl evaluation forbidden in sandbox without the Safe module"));
- else
- # endif
- {
---- 1297,1308 ----
- ENTER;
- SAVETMPS;
-
-! if (sandbox || secure)
- {
- safe = get_sv("VIM::safe", FALSE);
- # ifndef MAKE_TEST /* avoid a warning for unreachable code */
- if (safe == NULL || !SvTRUE(safe))
-! emsg(_(e_perlsandbox));
- else
- # endif
- {
-***************
-*** 1320,1326 ****
- }
- }
- else
-- #endif /* HAVE_SANDBOX */
- sv = eval_pv((char *)str, 0);
-
- if (sv) {
---- 1318,1323 ----
-*** ../vim-8.1.0880/src/ex_cmds.c 2019-01-31 18:26:05.734803539 +0100
---- src/ex_cmds.c 2019-02-08 14:09:30.838943884 +0100
-***************
-*** 4775,4781 ****
- {
- if (restricted)
- {
-! emsg(_("E145: Shell commands not allowed in rvim"));
- return TRUE;
- }
- return FALSE;
---- 4775,4781 ----
- {
- if (restricted)
- {
-! emsg(_("E145: Shell commands and some functionality not allowed in rvim"));
- return TRUE;
- }
- return FALSE;
-*** ../vim-8.1.0880/src/ex_docmd.c 2019-01-31 18:26:05.734803539 +0100
---- src/ex_docmd.c 2019-02-08 13:21:20.959437381 +0100
-***************
-*** 2007,2017 ****
- #ifdef HAVE_SANDBOX
- if (sandbox != 0 && !(ea.argt & SBOXOK))
- {
-! /* Command not allowed in sandbox. */
- errormsg = _(e_sandbox);
- goto doend;
- }
- #endif
- if (!curbuf->b_p_ma && (ea.argt & MODIFY))
- {
- /* Command not allowed in non-'modifiable' buffer */
---- 2007,2022 ----
- #ifdef HAVE_SANDBOX
- if (sandbox != 0 && !(ea.argt & SBOXOK))
- {
-! // Command not allowed in sandbox.
- errormsg = _(e_sandbox);
- goto doend;
- }
- #endif
-+ if (restricted != 0 && (ea.argt & RESTRICT))
-+ {
-+ errormsg = _("E981: Command not allowed in rvim");
-+ goto doend;
-+ }
- if (!curbuf->b_p_ma && (ea.argt & MODIFY))
- {
- /* Command not allowed in non-'modifiable' buffer */
-*** ../vim-8.1.0880/src/evalfunc.c 2019-02-03 14:52:42.501867485 +0100
---- src/evalfunc.c 2019-02-08 14:14:33.345334906 +0100
-***************
-*** 6817,6823 ****
- #endif
-
- rettv->vval.v_number = FALSE;
-! if (check_restricted() || check_secure())
- return;
- #ifdef FEAT_CMDHIST
- str = tv_get_string_chk(&argvars[0]); /* NULL on type error */
---- 6817,6823 ----
- #endif
-
- rettv->vval.v_number = FALSE;
-! if (check_secure())
- return;
- #ifdef FEAT_CMDHIST
- str = tv_get_string_chk(&argvars[0]); /* NULL on type error */
-***************
-*** 7898,7903 ****
---- 7898,7906 ----
- char_u *str;
- char_u buf[NUMBUFLEN];
-
-+ if (check_restricted() || check_secure())
-+ return;
-+
- str = tv_get_string_buf(&argvars[0], buf);
- do_luaeval(str, argvars + 1, rettv);
- }
-***************
-*** 8644,8649 ****
---- 8647,8654 ----
- char_u *str;
- char_u buf[NUMBUFLEN];
-
-+ if (check_restricted() || check_secure())
-+ return;
- str = tv_get_string_buf(&argvars[0], buf);
- do_mzeval(str, rettv);
- }
-***************
-*** 8932,8937 ****
---- 8937,8945 ----
- char_u *str;
- char_u buf[NUMBUFLEN];
-
-+ if (check_restricted() || check_secure())
-+ return;
-+
- if (p_pyx == 0)
- p_pyx = 3;
-
-***************
-*** 8950,8955 ****
---- 8958,8966 ----
- char_u *str;
- char_u buf[NUMBUFLEN];
-
-+ if (check_restricted() || check_secure())
-+ return;
-+
- if (p_pyx == 0)
- p_pyx = 2;
-
-***************
-*** 8965,8970 ****
---- 8976,8984 ----
- static void
- f_pyxeval(typval_T *argvars, typval_T *rettv)
- {
-+ if (check_restricted() || check_secure())
-+ return;
-+
- # if defined(FEAT_PYTHON) && defined(FEAT_PYTHON3)
- init_pyxversion();
- if (p_pyx == 2)
-***************
-*** 10819,10825 ****
- typval_T *varp;
- char_u nbuf[NUMBUFLEN];
-
-! if (check_restricted() || check_secure())
- return;
- (void)tv_get_number(&argvars[0]); /* issue errmsg if type error */
- varname = tv_get_string_chk(&argvars[1]);
---- 10833,10839 ----
- typval_T *varp;
- char_u nbuf[NUMBUFLEN];
-
-! if (check_secure())
- return;
- (void)tv_get_number(&argvars[0]); /* issue errmsg if type error */
- varname = tv_get_string_chk(&argvars[1]);
-***************
-*** 11341,11347 ****
-
- rettv->vval.v_number = 0;
-
-! if (check_restricted() || check_secure())
- return;
-
- tp = find_tabpage((int)tv_get_number_chk(&argvars[0], NULL));
---- 11355,11361 ----
-
- rettv->vval.v_number = 0;
-
-! if (check_secure())
- return;
-
- tp = find_tabpage((int)tv_get_number_chk(&argvars[0], NULL));
-***************
-*** 14714,14720 ****
- blob_T *blob = NULL;
-
- rettv->vval.v_number = -1;
-! if (check_restricted() || check_secure())
- return;
-
- if (argvars[0].v_type == VAR_LIST)
---- 14728,14734 ----
- blob_T *blob = NULL;
-
- rettv->vval.v_number = -1;
-! if (check_secure())
- return;
-
- if (argvars[0].v_type == VAR_LIST)
-*** ../vim-8.1.0880/src/testdir/test_restricted.vim 2019-02-08 14:31:57.351438282 +0100
---- src/testdir/test_restricted.vim 2019-02-08 14:26:17.361387453 +0100
-***************
-*** 0 ****
---- 1,107 ----
-+ " Test for "rvim" or "vim -Z"
-+
-+ source shared.vim
-+
-+ func Test_restricted()
-+ let cmd = GetVimCommand('Xrestricted')
-+ if cmd == ''
-+ return
-+ endif
-+
-+ call writefile([
-+ \ "silent !ls",
-+ \ "call writefile([v:errmsg], 'Xrestrout')",
-+ \ "qa!",
-+ \ ], 'Xrestricted')
-+ call system(cmd . ' -Z')
-+ call assert_match('E145:', join(readfile('Xrestrout')))
-+
-+ call delete('Xrestricted')
-+ call delete('Xrestrout')
-+ endfunc
-+
-+ func Run_restricted_test(ex_cmd, error)
-+ let cmd = GetVimCommand('Xrestricted')
-+ if cmd == ''
-+ return
-+ endif
-+
-+ call writefile([
-+ \ a:ex_cmd,
-+ \ "call writefile([v:errmsg], 'Xrestrout')",
-+ \ "qa!",
-+ \ ], 'Xrestricted')
-+ call system(cmd . ' -Z')
-+ call assert_match(a:error, join(readfile('Xrestrout')))
-+
-+ call delete('Xrestricted')
-+ call delete('Xrestrout')
-+ endfunc
-+
-+ func Test_restricted_lua()
-+ if !has('lua')
-+ throw 'Skipped: Lua is not supported'
-+ endif
-+ call Run_restricted_test('lua print("Hello, Vim!")', 'E981:')
-+ call Run_restricted_test('luado return "hello"', 'E981:')
-+ call Run_restricted_test('luafile somefile', 'E981:')
-+ call Run_restricted_test('call luaeval("expression")', 'E145:')
-+ endfunc
-+
-+ func Test_restricted_mzscheme()
-+ if !has('mzscheme')
-+ throw 'Skipped: MzScheme is not supported'
-+ endif
-+ call Run_restricted_test('mzscheme statement', 'E981:')
-+ call Run_restricted_test('mzfile somefile', 'E981:')
-+ call Run_restricted_test('call mzeval("expression")', 'E145:')
-+ endfunc
-+
-+ func Test_restricted_perl()
-+ if !has('perl')
-+ throw 'Skipped: Perl is not supported'
-+ endif
-+ " TODO: how to make Safe mode fail?
-+ " call Run_restricted_test('perl system("ls")', 'E981:')
-+ " call Run_restricted_test('perldo system("hello")', 'E981:')
-+ " call Run_restricted_test('perlfile somefile', 'E981:')
-+ " call Run_restricted_test('call perleval("system(\"ls\")")', 'E145:')
-+ endfunc
-+
-+ func Test_restricted_python()
-+ if !has('python')
-+ throw 'Skipped: Python is not supported'
-+ endif
-+ call Run_restricted_test('python print "hello"', 'E981:')
-+ call Run_restricted_test('pydo return "hello"', 'E981:')
-+ call Run_restricted_test('pyfile somefile', 'E981:')
-+ call Run_restricted_test('call pyeval("expression")', 'E145:')
-+ endfunc
-+
-+ func Test_restricted_python3()
-+ if !has('python3')
-+ throw 'Skipped: Python3 is not supported'
-+ endif
-+ call Run_restricted_test('py3 print "hello"', 'E981:')
-+ call Run_restricted_test('py3do return "hello"', 'E981:')
-+ call Run_restricted_test('py3file somefile', 'E981:')
-+ call Run_restricted_test('call py3eval("expression")', 'E145:')
-+ endfunc
-+
-+ func Test_restricted_ruby()
-+ if !has('ruby')
-+ throw 'Skipped: Ruby is not supported'
-+ endif
-+ call Run_restricted_test('ruby print "Hello"', 'E981:')
-+ call Run_restricted_test('rubydo print "Hello"', 'E981:')
-+ call Run_restricted_test('rubyfile somefile', 'E981:')
-+ endfunc
-+
-+ func Test_restricted_tcl()
-+ if !has('tcl')
-+ throw 'Skipped: Tcl is not supported'
-+ endif
-+ call Run_restricted_test('tcl puts "Hello"', 'E981:')
-+ call Run_restricted_test('tcldo puts "Hello"', 'E981:')
-+ call Run_restricted_test('tclfile somefile', 'E981:')
-+ endfunc
-*** ../vim-8.1.0880/src/testdir/Make_all.mak 2019-01-24 22:42:14.949304772 +0100
---- src/testdir/Make_all.mak 2019-02-08 13:37:16.649924127 +0100
-***************
-*** 213,218 ****
---- 213,219 ----
- test_regexp_utf8 \
- test_registers \
- test_reltime \
-+ test_restricted \
- test_retab \
- test_ruby \
- test_scriptnames \
-***************
-*** 375,380 ****
---- 376,382 ----
- test_quotestar.res \
- test_regex_char_classes.res \
- test_registers.res \
-+ test_restricted.res \
- test_retab.res \
- test_ruby.res \
- test_scriptnames.res \
-*** ../vim-8.1.0880/src/version.c 2019-02-08 12:46:03.588784187 +0100
---- src/version.c 2019-02-08 14:32:06.151387661 +0100
-***************
-*** 785,786 ****
---- 785,788 ----
- { /* Add new patch number below this line */
-+ /**/
-+ 881,
- /**/
-
---
-A parent can be arrested if his child cannot hold back a burp during a church
-service.
- [real standing law in Nebraska, United States of America]
-
- /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
-/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
-\\\ an exciting new programming language -- http://www.Zimbu.org ///
- \\\ help me help AIDS victims -- http://ICCF-Holland.org ///