mirror of
https://github.com/vim/vim.git
synced 2025-07-26 11:04:33 -04:00
patch 9.0.1440: "rvim" can execute a shell through :diffpatch
Problem: "rvim" can execute a shell through :diffpatch. Solution: Disallow the shell "patch" command.
This commit is contained in:
parent
cde8de0345
commit
23a971da50
@ -1310,6 +1310,9 @@ ex_diffpatch(exarg_T *eap)
|
|||||||
else
|
else
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
|
if (check_restricted())
|
||||||
|
goto theend;
|
||||||
|
|
||||||
// Build the patch command and execute it. Ignore errors. Switch to
|
// Build the patch command and execute it. Ignore errors. Switch to
|
||||||
// cooked mode to allow the user to respond to prompts.
|
// cooked mode to allow the user to respond to prompts.
|
||||||
vim_snprintf((char *)buf, buflen, "patch -o %s %s < %s",
|
vim_snprintf((char *)buf, buflen, "patch -o %s %s < %s",
|
||||||
@ -1380,7 +1383,8 @@ ex_diffpatch(exarg_T *eap)
|
|||||||
|
|
||||||
// Do filetype detection with the new name.
|
// Do filetype detection with the new name.
|
||||||
if (au_has_group((char_u *)"filetypedetect"))
|
if (au_has_group((char_u *)"filetypedetect"))
|
||||||
do_cmdline_cmd((char_u *)":doau filetypedetect BufRead");
|
do_cmdline_cmd(
|
||||||
|
(char_u *)":doau filetypedetect BufRead");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -736,6 +736,21 @@ func Test_diffpatch()
|
|||||||
bwipe!
|
bwipe!
|
||||||
endfunc
|
endfunc
|
||||||
|
|
||||||
|
" FIXME: test fails, the Xresult file can't be read
|
||||||
|
func No_Test_diffpatch_restricted()
|
||||||
|
let lines =<< trim END
|
||||||
|
call assert_fails('diffpatch NoSuchDiff', 'E145:')
|
||||||
|
|
||||||
|
call writefile(v:errors, 'Xresult')
|
||||||
|
qa!
|
||||||
|
END
|
||||||
|
call writefile(lines, 'Xrestricted', 'D')
|
||||||
|
if RunVim([], [], '-Z --clean -S Xrestricted')
|
||||||
|
call assert_equal([], readfile('Xresult'))
|
||||||
|
endif
|
||||||
|
call delete('Xresult')
|
||||||
|
endfunc
|
||||||
|
|
||||||
func Test_diff_too_many_buffers()
|
func Test_diff_too_many_buffers()
|
||||||
for i in range(1, 8)
|
for i in range(1, 8)
|
||||||
exe "new Xtest" . i
|
exe "new Xtest" . i
|
||||||
|
@ -695,6 +695,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
1440,
|
||||||
/**/
|
/**/
|
||||||
1439,
|
1439,
|
||||||
/**/
|
/**/
|
||||||
|
Loading…
x
Reference in New Issue
Block a user