API: Avoid overrun when formatting error-message

msgpack_rpc_to_object (called by handle_request .. msgpack_rpc_to_array)
always NUL-terminates API Strings.
But handle_request .. msgpack_rpc_get_handler_for operates on a raw
msgpack_object, before preparation.
This commit is contained in:
Justin M. Keyes
2018-08-29 10:06:35 +02:00
parent 9fe8e3cb2f
commit db17d2c0fa
7 changed files with 30 additions and 40 deletions

View File

@@ -337,7 +337,7 @@ describe('API', function()
eq(1, funcs.exists('g:lua'))
meths.del_var('lua')
eq(0, funcs.exists('g:lua'))
eq({false, 'Key does not exist: lua'}, meth_pcall(meths.del_var, 'lua'))
eq({false, "Key not found: lua"}, meth_pcall(meths.del_var, 'lua'))
meths.set_var('lua', 1)
command('lockvar lua')
eq({false, 'Key is locked: lua'}, meth_pcall(meths.del_var, 'lua'))
@@ -948,7 +948,7 @@ describe('API', function()
}
local status, err = pcall(meths.call_atomic, req)
eq(false, status)
ok(err:match(' All items in calls array must be arrays of size 2') ~= nil)
ok(err:match('Items in calls array must be arrays of size 2') ~= nil)
-- call before was done, but not after
eq(1, meths.get_var('avar'))
@@ -958,7 +958,7 @@ describe('API', function()
}
status, err = pcall(meths.call_atomic, req)
eq(false, status)
ok(err:match('All items in calls array must be arrays') ~= nil)
ok(err:match('Items in calls array must be arrays') ~= nil)
eq({2,3}, meths.get_var('bvar'))
req = {