mirror of
https://github.com/neovim/neovim.git
synced 2025-10-05 09:26:30 +00:00
fix(rpc): assertion failure due to invalid msgpack input
Problem: rbuffer_consumed assertion fails if Unpacker fails to parse msgpack, because it doesn't consume bytes on errors Solution: Call rbuffer_consumed_compact only if Unpacker isn't closed
This commit is contained in:
@@ -304,8 +304,11 @@ static void receive_msgpack(Stream *stream, RBuffer *rbuf, size_t c, void *data,
|
||||
p->read_ptr = rbuffer_read_ptr(rbuf, &size);
|
||||
p->read_size = size;
|
||||
parse_msgpack(channel);
|
||||
size_t consumed = size - p->read_size;
|
||||
rbuffer_consumed_compact(rbuf, consumed);
|
||||
|
||||
if (!unpacker_closed(p)) {
|
||||
size_t consumed = size - p->read_size;
|
||||
rbuffer_consumed_compact(rbuf, consumed);
|
||||
}
|
||||
|
||||
end:
|
||||
channel_decref(channel);
|
||||
|
Reference in New Issue
Block a user