diff options
author | Christian Clason <c.clason@uni-graz.at> | 2023-01-31 17:28:32 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-01-31 17:28:32 +0100 |
commit | 8b11cf5092e0dfe45ee0f9cf0b72ce4ddeb8740c (patch) | |
tree | f2cfecae2fb79018137fe4f646c1f6da1a066d38 /runtime/lua/vim | |
parent | facbb11e050186a13aa5451591f3c53b012f5566 (diff) | |
parent | c032e83b22994332dd8769ef34cb817906a63cac (diff) | |
download | rneovim-8b11cf5092e0dfe45ee0f9cf0b72ce4ddeb8740c.tar.gz rneovim-8b11cf5092e0dfe45ee0f9cf0b72ce4ddeb8740c.tar.bz2 rneovim-8b11cf5092e0dfe45ee0f9cf0b72ce4ddeb8740c.zip |
Merge pull request #22005 from clason/sanitize-lang
fix(treesitter): validate language name
Diffstat (limited to 'runtime/lua/vim')
-rw-r--r-- | runtime/lua/vim/treesitter/language.lua | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/runtime/lua/vim/treesitter/language.lua b/runtime/lua/vim/treesitter/language.lua index c92d63b8c4..8634e53b7b 100644 --- a/runtime/lua/vim/treesitter/language.lua +++ b/runtime/lua/vim/treesitter/language.lua @@ -6,7 +6,7 @@ local M = {} --- --- Parsers are searched in the `parser` runtime directory, or the provided {path} --- ----@param lang string Language the parser should parse +---@param lang string Language the parser should parse (alphanumerical and `_` only) ---@param path (string|nil) Optional path the parser is located at ---@param silent (boolean|nil) Don't throw an error if language not found ---@param symbol_name (string|nil) Internal symbol name for the language to load @@ -16,13 +16,19 @@ function M.require_language(lang, path, silent, symbol_name) return true end if path == nil then - local fname = 'parser/' .. vim.fn.fnameescape(lang) .. '.*' + if not (lang and lang:match('[%w_]+') == lang) then + if silent then + return false + end + error("'" .. lang .. "' is not a valid language name") + end + + local fname = 'parser/' .. lang .. '.*' local paths = a.nvim_get_runtime_file(fname, false) if #paths == 0 then if silent then return false end - error("no parser for '" .. lang .. "' language, see :help treesitter-parsers") end path = paths[1] |