diff --git a/src/cmt_decode_msgpack.c b/src/cmt_decode_msgpack.c index 2e1cf31..4ede1bd 100644 --- a/src/cmt_decode_msgpack.c +++ b/src/cmt_decode_msgpack.c @@ -977,8 +977,11 @@ static int unpack_basic_type_meta(mpack_reader_t *reader, size_t index, void *co result = cmt_mpack_unpack_map(reader, callbacks, context); if (CMT_DECODE_MSGPACK_SUCCESS == result) { - decode_context->map->label_count = cfl_list_size(&decode_context->map->label_keys); + if (decode_context->map == NULL || decode_context->map->parent == NULL) { + return CMT_DECODE_MSGPACK_INVALID_ARGUMENT_ERROR; + } + decode_context->map->label_count = cfl_list_size(&decode_context->map->label_keys); if (decode_context->map->type == CMT_HISTOGRAM) { histogram = (struct cmt_histogram *) decode_context->map->parent;