summaryrefslogtreecommitdiffstats
path: root/runtime/ftplugin/ruby.vim
diff options
context:
space:
mode:
authorChristian Brabandt <cb@256bit.org>2023-09-06 20:41:25 +0200
committerChristian Brabandt <cb@256bit.org>2023-09-06 20:41:25 +0200
commitf7ac0ef5098856bedca26e7073594a407c05636f (patch)
tree236332bc827a84d5b5f70eedc96a00a30e0b9813 /runtime/ftplugin/ruby.vim
parent1689e847ff3b43723c247be36d84f03fce2a66d6 (diff)
runtime: don't execute external commands when loading ftplugins
This is a followup to 816fbcc262687b81fc46f82f7bbeb1453addfe0c (patch 9.0.1833: [security] runtime file fixes) It basically disables that external commands are run on loading of the filetype plugin, **unless** the user has set the `g:plugin_exec = 1` global variable in their configuration or for a specific filetype the variable g:<filetype>_exec=1. There are a few more plugins, that may execute system commands like debchangelog, gitcommit, sh, racket, zsh, ps1 but those do at least do not run those commands by default during loading of the filetype plugin (there the command is mostly run as convenience for auto-completion or to provide documentation lookup). closes: #13034 Signed-off-by: Christian Brabandt <cb@256bit.org> Co-authored-by: Tim Pope <vim@tpope.org>
Diffstat (limited to 'runtime/ftplugin/ruby.vim')
-rw-r--r--runtime/ftplugin/ruby.vim6
1 files changed, 5 insertions, 1 deletions
diff --git a/runtime/ftplugin/ruby.vim b/runtime/ftplugin/ruby.vim
index a424801cd1..b61c1765d9 100644
--- a/runtime/ftplugin/ruby.vim
+++ b/runtime/ftplugin/ruby.vim
@@ -61,6 +61,10 @@ if !exists('g:ruby_version_paths')
endif
function! s:query_path(root) abort
+ " Disabled by default for security reasons.
+ if !get(g:, 'ruby_exec', get(g:, 'plugin_exec', 0))
+ return []
+ endif
let code = "print $:.join %q{,}"
if &shell =~# 'sh' && empty(&shellxquote)
let prefix = 'env PATH='.shellescape($PATH).' '
@@ -84,7 +88,7 @@ function! s:query_path(root) abort
else
let path = split(system(path_check),',')
endif
- unlet s:tmp_cwd
+ unlet! s:tmp_cwd
exe cd cwd
return path
finally