comparison runtime/ftplugin/awk.vim @ 33203:c3c347a71e05

runtime: don't execute external commands when loading ftplugins Commit: https://github.com/vim/vim/commit/f7ac0ef5098856bedca26e7073594a407c05636f Author: Christian Brabandt <cb@256bit.org> Date: Wed Sep 6 20:41:25 2023 +0200 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>
author Christian Brabandt <cb@256bit.org>
date Wed, 06 Sep 2023 20:45:03 +0200
parents 8dad79c661d1
children bd3ee5abdd7a
comparison
equal deleted inserted replaced
33202:9a9e9485fa5a 33203:c3c347a71e05
35 if has("unix") || has("win32unix") 35 if has("unix") || has("win32unix")
36 setlocal formatprg=gawk\ -f-\ -o/dev/stdout 36 setlocal formatprg=gawk\ -f-\ -o/dev/stdout
37 let b:undo_ftplugin .= " | setl fp<" 37 let b:undo_ftplugin .= " | setl fp<"
38 endif 38 endif
39 39
40 let path = system("gawk 'BEGIN { printf ENVIRON[\"AWKPATH\"] }'") 40 " Disabled by default for security reasons.
41 let path = substitute(path, '^\.\=:\|:\.\=$\|:\.\=:', ',,', 'g') " POSIX cwd 41 if get(g:, 'awk_exec', get(g:, 'plugin_exec', 0))
42 let path = substitute(path, ':', ',', 'g') 42 let path = system("gawk 'BEGIN { printf ENVIRON[\"AWKPATH\"] }'")
43 let path = substitute(path, '^\.\=:\|:\.\=$\|:\.\=:', ',,', 'g') " POSIX cwd
44 let path = substitute(path, ':', ',', 'g')
43 45
44 let &l:path = path 46 let &l:path = path
47 endif
45 let b:undo_ftplugin .= " | setl inc< path<" 48 let b:undo_ftplugin .= " | setl inc< path<"
46 endif 49 endif
47 50
48 if (has("gui_win32") || has("gui_gtk")) && !exists("b:browsefilter") 51 if (has("gui_win32") || has("gui_gtk")) && !exists("b:browsefilter")
49 let b:browsefilter = "Awk Source Files (*.awk,*.gawk)\t*.awk;*.gawk\n" . 52 let b:browsefilter = "Awk Source Files (*.awk,*.gawk)\t*.awk;*.gawk\n" .