Commit 3975a9d7ca

dweiller <4678790+dweiller@users.noreplay.github.com>
2023-02-09 07:51:43
std.compress.zstandard: error when FSE bitstream is no fully consumed
1 parent 77ca1f7
Changed files (1)
lib
std
compress
zstandard
decode
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) {