From fea745d3d8377207dff35a1675604f41b6e4385b Mon Sep 17 00:00:00 2001 From: Ludovic DEHON Date: Tue, 18 Oct 2022 11:04:43 +0200 Subject: [PATCH] fix(topicdata): protection against tombstone message and headers close #1210 --- .../org/akhq/repositories/AvroWireFormatConverter.java | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/akhq/repositories/AvroWireFormatConverter.java b/src/main/java/org/akhq/repositories/AvroWireFormatConverter.java index 1a48a1fa4..af19c7eb3 100644 --- a/src/main/java/org/akhq/repositories/AvroWireFormatConverter.java +++ b/src/main/java/org/akhq/repositories/AvroWireFormatConverter.java @@ -34,11 +34,14 @@ public byte[] convertValueToWireFormat(ConsumerRecord record, Sc if (schemaRegistryType == SchemaRegistryType.TIBCO) { magicByte = (byte) 0x80; } - Iterator
contentTypeIter = record.headers().headers("contentType").iterator(); + Iterator
contentTypeIter = record.headers().headers("contentType").iterator(); byte[] value = record.value(); - if (contentTypeIter.hasNext() && + if ( + value != null && + contentTypeIter.hasNext() && value.length > 0 && - ByteBuffer.wrap(value).get() != magicByte) { + ByteBuffer.wrap(value).get() != magicByte + ) { String headerValue = new String(contentTypeIter.next().value()); Matcher matcher = AVRO_CONTENT_TYPE_PATTERN.matcher(headerValue); if (matcher.matches()) {