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(...@@ -659,6 +659,10 @@ pub fn decodeBlock(
659 sequence_size_limit -= decompressed_size;659 sequence_size_limit -= decompressed_size;
660 }660 }
661661
662 if (bit_stream.bit_reader.bit_count != 0) {
663 return error.MalformedCompressedBlock;
664 }
665
662 bytes_read += bit_stream_bytes.len;666 bytes_read += bit_stream_bytes.len;
663 }667 }
664 if (bytes_read != block_size) return error.MalformedCompressedBlock;668 if (bytes_read != block_size) return error.MalformedCompressedBlock;
...@@ -745,6 +749,10 @@ pub fn decodeBlockRingBuffer(...@@ -745,6 +749,10 @@ pub fn decodeBlockRingBuffer(
745 sequence_size_limit -= decompressed_size;749 sequence_size_limit -= decompressed_size;
746 }750 }
747751
752 if (bit_stream.bit_reader.bit_count != 0) {
753 return error.MalformedCompressedBlock;
754 }
755
748 bytes_read += bit_stream_bytes.len;756 bytes_read += bit_stream_bytes.len;
749 }757 }
750 if (bytes_read != block_size) return error.MalformedCompressedBlock;758 if (bytes_read != block_size) return error.MalformedCompressedBlock;
...@@ -828,6 +836,9 @@ pub fn decodeBlockReader(...@@ -828,6 +836,9 @@ pub fn decodeBlockReader(
828 sequence_size_limit -= decompressed_size;836 sequence_size_limit -= decompressed_size;
829 bytes_written += decompressed_size;837 bytes_written += decompressed_size;
830 }838 }
839 if (bit_stream.bit_reader.bit_count != 0) {
840 return error.MalformedCompressedBlock;
841 }
831 }842 }
832843
833 if (decode_state.literal_written_count < literals.header.regenerated_size) {844 if (decode_state.literal_written_count < literals.header.regenerated_size) {