mirror of
https://github.com/neovim/neovim.git
synced 2025-09-07 11:58:17 +00:00
helpers.c: Handle msgpack str/bin objects with length 0 correctly
When converting a msgpack object to a String object, strings (and byte arrays) with length 0 are handled as errors. This is fixed by always using the msgpack data pointer as a valid pointer. For a NULL pointer there is nothing to copy. Test by @snoe Fixes #3844
This commit is contained in:
@@ -94,10 +94,9 @@ bool msgpack_rpc_to_string(msgpack_object *obj, String *arg)
|
||||
FUNC_ATTR_NONNULL_ALL
|
||||
{
|
||||
if (obj->type == MSGPACK_OBJECT_BIN || obj->type == MSGPACK_OBJECT_STR) {
|
||||
if (obj->via.bin.ptr == NULL) {
|
||||
return false;
|
||||
}
|
||||
arg->data = xmemdupz(obj->via.bin.ptr, obj->via.bin.size);
|
||||
arg->data = obj->via.bin.ptr != NULL
|
||||
? xmemdupz(obj->via.bin.ptr, obj->via.bin.size)
|
||||
: NULL;
|
||||
arg->size = obj->via.bin.size;
|
||||
return true;
|
||||
}
|
||||
|
Reference in New Issue
Block a user