[fuzz] Only set HUF_repeat_valid if loaded table has all non-zero weights (#1898)
Fixes a fuzz issue where dictionary_round_trip failed because the compressor was generating corrupt files thanks to zero weights in the table. * Only setting loaded dict huf table to valid on non-zero * Adding hasNoZeroWeights test to fse tables * Forbiding nbBits != 0 when weight == 0 * Reverting the last commit * Setting table log to 0 when weight == 0 * Small (invalid) zero weight dict test * Small (valid) zero weight dict test * Initializing repeatMode vars to check before zero check * Removing FSE changes to seperate pr * Reverting accidentally changed file * Negating bool, using unsigned, optimization nit
This commit is contained in:
committed by
Nick Terrell
parent
d6e0a44576
commit
a3a3c62b81
Binary file not shown.
+16
-1
@@ -502,6 +502,22 @@ cmp tmp tmp_decompress || die "difference between original and decompressed file
|
||||
println "test : incorrect stream size"
|
||||
cat tmp | $ZSTD -14 -f -o tmp.zst --stream-size=11001 && die "should fail with incorrect stream size"
|
||||
|
||||
println "\n===> zstd zero weight dict test "
|
||||
rm -f tmp*
|
||||
cp "$TESTDIR/dict-files/zero-weight-dict" tmp_input
|
||||
$ZSTD -D "$TESTDIR/dict-files/zero-weight-dict" tmp_input
|
||||
$ZSTD -D "$TESTDIR/dict-files/zero-weight-dict" -d tmp_input.zst -o tmp_decomp
|
||||
$DIFF tmp_decomp tmp_input
|
||||
rm -rf tmp*
|
||||
|
||||
println "\n===> zstd (valid) zero weight dict test "
|
||||
rm -f tmp*
|
||||
# 0 has a non-zero weight in the dictionary
|
||||
echo "0000000000000000000000000" > tmp_input
|
||||
$ZSTD -D "$TESTDIR/dict-files/zero-weight-dict" tmp_input
|
||||
$ZSTD -D "$TESTDIR/dict-files/zero-weight-dict" -d tmp_input.zst -o tmp_decomp
|
||||
$DIFF tmp_decomp tmp_input
|
||||
rm -rf tmp*
|
||||
|
||||
println "\n===> size-hint mode"
|
||||
|
||||
@@ -1189,7 +1205,6 @@ $ZSTD --train-cover "$TESTDIR"/*.c "$PRGDIR"/*.c
|
||||
test -f dictionary
|
||||
rm -f tmp* dictionary
|
||||
|
||||
|
||||
if [ "$isWindows" = false ] ; then
|
||||
|
||||
println "\n===> zstd fifo named pipe test "
|
||||
|
||||
Reference in New Issue
Block a user