From e9b9a86cd5a555943b87f0ba40c4527561c3c124 Mon Sep 17 00:00:00 2001 From: zeertzjq Date: Sat, 11 Nov 2023 10:21:14 +0800 Subject: fix(context): don't crash on invalid arg to nvim_get_context (#25977) Note: The crash happens in the second test case when using uninitialized memory, and therefore doesn't happen with ASAN. --- test/functional/vimscript/ctx_functions_spec.lua | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'test/functional/vimscript/ctx_functions_spec.lua') diff --git a/test/functional/vimscript/ctx_functions_spec.lua b/test/functional/vimscript/ctx_functions_spec.lua index 5ee84a6d13..66a8ec3550 100644 --- a/test/functional/vimscript/ctx_functions_spec.lua +++ b/test/functional/vimscript/ctx_functions_spec.lua @@ -375,6 +375,12 @@ describe('context functions', function() eq(outofbounds, pcall_err(call, 'ctxset', {dummy = 1}, 0)) end) + it('errors when context dictionary is invalid', function() + call('ctxpush') + eq('Vim:E474: Failed to convert list to msgpack string buffer', + pcall_err(call, 'ctxset', { regs = { {} } })) + end) + it('sets context dictionary at index in context stack', function() nvim('set_var', 'one', 1) nvim('set_var', 'Two', 2) -- cgit From fdaf6bc5573f578d100321dfc084d513884fd73a Mon Sep 17 00:00:00 2001 From: zeertzjq Date: Sat, 11 Nov 2023 13:10:26 +0800 Subject: fix(context): don't leak memory on multiple invalid objects (#25979) --- test/functional/vimscript/ctx_functions_spec.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'test/functional/vimscript/ctx_functions_spec.lua') diff --git a/test/functional/vimscript/ctx_functions_spec.lua b/test/functional/vimscript/ctx_functions_spec.lua index 66a8ec3550..17607f0794 100644 --- a/test/functional/vimscript/ctx_functions_spec.lua +++ b/test/functional/vimscript/ctx_functions_spec.lua @@ -378,7 +378,7 @@ describe('context functions', function() it('errors when context dictionary is invalid', function() call('ctxpush') eq('Vim:E474: Failed to convert list to msgpack string buffer', - pcall_err(call, 'ctxset', { regs = { {} } })) + pcall_err(call, 'ctxset', { regs = { {} }, jumps = { {} } })) end) it('sets context dictionary at index in context stack', function() -- cgit