diff --git a/epan/dissectors/packet-kafka.c b/epan/dissectors/packet-kafka.c index f60ecda88c..aaef2d36c5 100644 --- a/epan/dissectors/packet-kafka.c +++ b/epan/dissectors/packet-kafka.c @@ -267,6 +267,7 @@ static expert_field ei_kafka_bad_record_length = EI_INIT; static expert_field ei_kafka_bad_varint = EI_INIT; static expert_field ei_kafka_bad_message_set_length = EI_INIT; static expert_field ei_kafka_bad_decompression_length = EI_INIT; +static expert_field ei_kafka_zero_decompression_length = EI_INIT; static expert_field ei_kafka_unknown_message_magic = EI_INIT; static expert_field ei_kafka_pdu_length_mismatch = EI_INIT; @@ -1874,6 +1875,10 @@ decompress(tvbuff_t *tvb, packet_info *pinfo, int offset, guint32 length, int co expert_add_info(pinfo, NULL, &ei_kafka_bad_decompression_length); return FALSE; } + if (length == 0) { + expert_add_info(pinfo, NULL, &ei_kafka_zero_decompression_length); + return FALSE; + } switch (codec) { case KAFKA_MESSAGE_CODEC_SNAPPY: return decompress_snappy(tvb, pinfo, offset, length, decompressed_tvb, decompressed_offset); @@ -10246,6 +10251,8 @@ proto_register_kafka_expert_module(const int proto) { { "kafka.ei_kafka_bad_message_set_length", PI_MALFORMED, PI_WARN, "Message set size does not match content", EXPFILL }}, { &ei_kafka_bad_decompression_length, { "kafka.ei_kafka_bad_decompression_length", PI_MALFORMED, PI_WARN, "Decompression size too large", EXPFILL }}, + { &ei_kafka_zero_decompression_length, + { "kafka.ei_kafka_zero_decompression_length", PI_PROTOCOL, PI_NOTE, "Decompression size zero", EXPFILL }}, { &ei_kafka_unknown_message_magic, { "kafka.unknown_message_magic", PI_MALFORMED, PI_WARN, "Invalid message magic field", EXPFILL }}, { &ei_kafka_pdu_length_mismatch,