diff --git a/src/cmt_decode_msgpack.c b/src/cmt_decode_msgpack.c index 009ac4a..e0daec6 100644 --- a/src/cmt_decode_msgpack.c +++ b/src/cmt_decode_msgpack.c @@ -978,6 +978,9 @@ static int unpack_basic_type_meta(mpack_reader_t *reader, size_t index, void *co 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; + } if (decode_context->map->type == CMT_HISTOGRAM) { histogram = (struct cmt_histogram *) decode_context->map->parent; @@ -1006,12 +1009,7 @@ static int unpack_basic_type_meta(mpack_reader_t *reader, size_t index, void *co } else if(decode_context->map->type == CMT_COUNTER) { counter = (struct cmt_counter *) decode_context->map->parent; - if (counter == NULL) { - result = CMT_DECODE_MSGPACK_ALLOCATION_ERROR; - } - else { - counter->aggregation_type = decode_context->aggregation_type; - } + counter->aggregation_type = decode_context->aggregation_type; } }