Open klauspost opened 2 years ago
Thanks for the bug report!
We'll aim to fix this one, but we're okay with not reporting all types of corruption. Our policy is that if you want error detection, enable checksumming. That said, we still like to report corruption whenever we can.
The differential fuzzing you're doing is super interesting! Glad to see that there is another robust enough implementation out there that differential fuzzing can reveal bugs in the reference decoder!
One thing I've learnt from the decoder is that it checks everything :)
This should be a good (but not reliable) corruption detection method. Of course not as reliable as CRC, but it can also be seen as a good supplement for the chance of the 32 bit CRC colliding, just like the other checks.
Yeah. It is not a clean-room implementation, but still based on the spec and with peeks at the code for the "not-clear-enough-for-me" parts. Most of the remaining mismatches are because of how the wrapper is implemented.
Describe the bug
Extra bits on stream does not get reported, even after #1598
To Reproduce
Decompress: fea5d210d01530bfeb0130452ef432734b23e744.zst.gz Execute
zstd -d fea5d210d01530bfeb0130452ef432734b23e744.zst
Expected behavior
The sample contains 15 extra bits when the sequence has been decoded. These should be reported as an error.
zstd with debugging reports:
Also tested with
v1.5.2
release.It seems we "agree" on decompression:
Desktop (please complete the following information):
Edit: Second example, 0 sequences, but 4 bytes left on stream after literal decoding: 447902c8e4faf807f9b8f9c1861abe7990c476dd.zst.gz