| ... | @@ -678,7 +678,12 @@ pub fn decodeBlock( | ... | @@ -678,7 +678,12 @@ pub fn decodeBlock( |
| 678 | bytes_written += len; | 678 | bytes_written += len; |
| 679 | } | 679 | } |
| 680 | | 680 | |
| 681 | if (!decode_state.isLiteralStreamEmpty()) return error.MalformedCompressedBlock; | 681 | switch (decode_state.literal_header.block_type) { |
| | 682 | .treeless, .compressed => { |
| | 683 | if (!decode_state.isLiteralStreamEmpty()) return error.MalformedCompressedBlock; |
| | 684 | }, |
| | 685 | .raw, .rle => {}, |
| | 686 | } |
| 682 | | 687 | |
| 683 | consumed_count.* += block_size; | 688 | consumed_count.* += block_size; |
| 684 | return bytes_written; | 689 | return bytes_written; |
| ... | @@ -766,7 +771,12 @@ pub fn decodeBlockRingBuffer( | ... | @@ -766,7 +771,12 @@ pub fn decodeBlockRingBuffer( |
| 766 | bytes_written += len; | 771 | bytes_written += len; |
| 767 | } | 772 | } |
| 768 | | 773 | |
| 769 | if (!decode_state.isLiteralStreamEmpty()) return error.MalformedCompressedBlock; | 774 | switch (decode_state.literal_header.block_type) { |
| | 775 | .treeless, .compressed => { |
| | 776 | if (!decode_state.isLiteralStreamEmpty()) return error.MalformedCompressedBlock; |
| | 777 | }, |
| | 778 | .raw, .rle => {}, |
| | 779 | } |
| 770 | | 780 | |
| 771 | consumed_count.* += block_size; | 781 | consumed_count.* += block_size; |
| 772 | if (bytes_written > block_size_max) return error.BlockSizeOverMaximum; | 782 | if (bytes_written > block_size_max) return error.BlockSizeOverMaximum; |
| ... | @@ -853,7 +863,12 @@ pub fn decodeBlockReader( | ... | @@ -853,7 +863,12 @@ pub fn decodeBlockReader( |
| 853 | bytes_written += len; | 863 | bytes_written += len; |
| 854 | } | 864 | } |
| 855 | | 865 | |
| 856 | if (!decode_state.isLiteralStreamEmpty()) return error.MalformedCompressedBlock; | 866 | switch (decode_state.literal_header.block_type) { |
| | 867 | .treeless, .compressed => { |
| | 868 | if (!decode_state.isLiteralStreamEmpty()) return error.MalformedCompressedBlock; |
| | 869 | }, |
| | 870 | .raw, .rle => {}, |
| | 871 | } |
| 857 | | 872 | |
| 858 | if (bytes_written > block_size_max) return error.BlockSizeOverMaximum; | 873 | if (bytes_written > block_size_max) return error.BlockSizeOverMaximum; |
| 859 | if (block_reader_limited.bytes_left != 0) return error.MalformedCompressedBlock; | 874 | if (block_reader_limited.bytes_left != 0) return error.MalformedCompressedBlock; |