diff --git a/CHANGES.txt b/CHANGES.txt index 9086774415..3af49674dc 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -43,6 +43,7 @@ 2.1.3 + * Better detection/logging for corruption in compressed sstables (CASSANDRA-8192) * Use the correct repairedAt value when closing writer (CASSANDRA-8570) * (cqlsh) Handle a schema mismatch being detected on startup (CASSANDRA-8512) * Properly calculate expected write size during compaction (CASSANDRA-8532) diff --git a/src/java/org/apache/cassandra/io/compress/CompressionMetadata.java b/src/java/org/apache/cassandra/io/compress/CompressionMetadata.java index 33f2ac1342..57d7cbe087 100644 --- a/src/java/org/apache/cassandra/io/compress/CompressionMetadata.java +++ b/src/java/org/apache/cassandra/io/compress/CompressionMetadata.java @@ -180,6 +180,9 @@ public class CompressionMetadata try { int chunkCount = input.readInt(); + if (chunkCount <= 0) + throw new IOException("Compressed file with 0 chunks encountered: " + input); + Memory offsets = Memory.allocate(chunkCount * 8); for (int i = 0; i < chunkCount; i++) @@ -404,6 +407,8 @@ public class CompressionMetadata public Chunk(long offset, int length) { + assert(length > 0); + this.offset = offset; this.length = length; }