commit 3975a9d7ca2013a4ac667b637fb273a9432c53aa (tree)
parent 77ca1f7859f6b02399bb52f7d66becc3867036c6
Author: dweiller <4678790+dweiller@users.noreplay.github.com>
Date: Thu, 9 Feb 2023 17:51:43 +1100
std.compress.zstandard: error when FSE bitstream is no fully consumed
Diffstat:
1 file changed, 11 insertions(+), 0 deletions(-)
diff --git a/lib/std/compress/zstandard/decode/block.zig b/lib/std/compress/zstandard/decode/block.zig
@@ -659,6 +659,10 @@ pub fn decodeBlock(
sequence_size_limit -= decompressed_size;
}
+ if (bit_stream.bit_reader.bit_count != 0) {
+ return error.MalformedCompressedBlock;
+ }
+
bytes_read += bit_stream_bytes.len;
}
if (bytes_read != block_size) return error.MalformedCompressedBlock;
@@ -745,6 +749,10 @@ pub fn decodeBlockRingBuffer(
sequence_size_limit -= decompressed_size;
}
+ if (bit_stream.bit_reader.bit_count != 0) {
+ return error.MalformedCompressedBlock;
+ }
+
bytes_read += bit_stream_bytes.len;
}
if (bytes_read != block_size) return error.MalformedCompressedBlock;
@@ -828,6 +836,9 @@ pub fn decodeBlockReader(
sequence_size_limit -= decompressed_size;
bytes_written += decompressed_size;
}
+ if (bit_stream.bit_reader.bit_count != 0) {
+ return error.MalformedCompressedBlock;
+ }
}
if (decode_state.literal_written_count < literals.header.regenerated_size) {