authorgravatar for 4678790+dweiller@users.noreply.github.comDominic <4678790+dweiller@users.noreply.github.com> 2023-02-09 17:51:43+11:00
committergravatar for 4678790+dweiller@users.noreply.github.comDominic <4678790+dweiller@users.noreply.github.com> 2023-02-20 09:09:06+11:00
log3975a9d7ca2013a4ac667b637fb273a9432c53aa
treeafe1efd7505ead89c055ee8ae9a892d147a89081
parent77ca1f7859f6b02399bb52f7d66becc3867036c6

std.compress.zstandard: error when FSE bitstream is no fully consumed


1 files changed, 11 insertions(+), 0 deletions(-)

lib/std/compress/zstandard/decode/block.zig+11
......@@ -659,6 +659,10 @@ pub fn decodeBlock(
659659 sequence_size_limit -= decompressed_size;
660660 }
661661
662 if (bit_stream.bit_reader.bit_count != 0) {
663 return error.MalformedCompressedBlock;
664 }
665
662666 bytes_read += bit_stream_bytes.len;
663667 }
664668 if (bytes_read != block_size) return error.MalformedCompressedBlock;
......@@ -745,6 +749,10 @@ pub fn decodeBlockRingBuffer(
745749 sequence_size_limit -= decompressed_size;
746750 }
747751
752 if (bit_stream.bit_reader.bit_count != 0) {
753 return error.MalformedCompressedBlock;
754 }
755
748756 bytes_read += bit_stream_bytes.len;
749757 }
750758 if (bytes_read != block_size) return error.MalformedCompressedBlock;
......@@ -828,6 +836,9 @@ pub fn decodeBlockReader(
828836 sequence_size_limit -= decompressed_size;
829837 bytes_written += decompressed_size;
830838 }
839 if (bit_stream.bit_reader.bit_count != 0) {
840 return error.MalformedCompressedBlock;
841 }
831842 }
832843
833844 if (decode_state.literal_written_count < literals.header.regenerated_size) {