From 674f2513d4d43688a55913456e6c01ddacceb199 Mon Sep 17 00:00:00 2001 From: Christian Clason Date: Thu, 18 Jan 2024 15:12:03 +0100 Subject: [PATCH] fix(treesitter): validate language alias for injections Problem: Parsed language annotations can be random garbage so `nvim_get_runtime_file` throws an error. Solution: Validate that `alias` is a valid language name before trying to find a parser for it. --- runtime/lua/vim/treesitter/languagetree.lua | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/runtime/lua/vim/treesitter/languagetree.lua b/runtime/lua/vim/treesitter/languagetree.lua index a249a10f47..971c4449e8 100644 --- a/runtime/lua/vim/treesitter/languagetree.lua +++ b/runtime/lua/vim/treesitter/languagetree.lua @@ -757,6 +757,11 @@ end) ---@param alias string language or filetype name ---@return string? # resolved parser name local function resolve_lang(alias) + -- validate that `alias` is a legal language + if not (alias and alias:match('[%w_]+') == alias) then + return + end + if has_parser(alias) then return alias end