aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorii14 <59243201+ii14@users.noreply.github.com>2023-01-12 16:25:44 +0100
committerGitHub <noreply@github.com>2023-01-12 15:25:44 +0000
commit921e634119c14b03f9611f1602df171c9ffc9559 (patch)
tree003bd0cf7464afec188aa6236b1574ae1a2d17af
parent0fd59f0121bbf8906203689c790eeba6f501600e (diff)
downloadrneovim-921e634119c14b03f9611f1602df171c9ffc9559.tar.gz
rneovim-921e634119c14b03f9611f1602df171c9ffc9559.tar.bz2
rneovim-921e634119c14b03f9611f1602df171c9ffc9559.zip
fix(api): nvim_create_autocmd crash on invalid types inside pattern array
Co-authored-by: ii14 <ii14@users.noreply.github.com>
-rw-r--r--src/nvim/api/autocmd.c2
-rw-r--r--test/functional/api/autocmd_spec.lua14
2 files changed, 15 insertions, 1 deletions
diff --git a/src/nvim/api/autocmd.c b/src/nvim/api/autocmd.c
index ada042e654..931363e199 100644
--- a/src/nvim/api/autocmd.c
+++ b/src/nvim/api/autocmd.c
@@ -940,7 +940,7 @@ static bool get_patterns_from_pattern_or_buf(Array *patterns, Object pattern, Ob
patlen = aucmd_pattern_length(pat);
}
} else if (v->type == kObjectTypeArray) {
- if (!check_autocmd_string_array(*patterns, "pattern", err)) {
+ if (!check_autocmd_string_array(v->data.array, "pattern", err)) {
return false;
}
diff --git a/test/functional/api/autocmd_spec.lua b/test/functional/api/autocmd_spec.lua
index 7fb52b097b..22a1311ee9 100644
--- a/test/functional/api/autocmd_spec.lua
+++ b/test/functional/api/autocmd_spec.lua
@@ -613,6 +613,20 @@ describe('autocmd api', function()
eq(false, success)
matches("'group' must be a string or an integer", code)
end)
+
+ it('raises error for invalid pattern array', function()
+ local success, code = unpack(meths.exec_lua([[
+ return {pcall(function()
+ vim.api.nvim_create_autocmd("FileType", {
+ pattern = {{}},
+ command = "echo 'hello'",
+ })
+ end)}
+ ]], {}))
+
+ eq(false, success)
+ matches("All entries in 'pattern' must be strings", code)
+ end)
end)
describe('patterns', function()