diff --git a/.github/workflows/checks.yaml b/.github/workflows/checks.yaml index bf6f9245..1bd1b19a 100644 --- a/.github/workflows/checks.yaml +++ b/.github/workflows/checks.yaml @@ -199,6 +199,7 @@ jobs: cargo fuzz run dictionary_round_trip -- -max_total_time=10 cargo fuzz run dictionary_train -- -dict=./fuzz/dictionaries/dictionary_train.txt -max_total_time=60 cargo fuzz run dictionary_train_fast -- -dict=./fuzz/dictionaries/dictionary_train.txt -max_total_time=60 + cargo fuzz run dictionary_train_legacy -- -dict=./fuzz/dictionaries/dictionary_train.txt -max_total_time=60 env: RUSTFLAGS: "-Awarnings" diff --git a/fuzz/Cargo.toml b/fuzz/Cargo.toml index d1f68a55..d6973d6c 100644 --- a/fuzz/Cargo.toml +++ b/fuzz/Cargo.toml @@ -49,3 +49,10 @@ path = "fuzz_targets/dictionary_train_fast.rs" test = false doc = false bench = false + +[[bin]] +name = "dictionary_train_legacy" +path = "fuzz_targets/dictionary_train_legacy.rs" +test = false +doc = false +bench = false diff --git a/fuzz/fuzz_targets/dictionary_train_legacy.rs b/fuzz/fuzz_targets/dictionary_train_legacy.rs new file mode 100644 index 00000000..823ecbbb --- /dev/null +++ b/fuzz/fuzz_targets/dictionary_train_legacy.rs @@ -0,0 +1,24 @@ +#![no_main] + +use c2rust_out_fuzz::{assert_eq_rs_c, ArbitrarySamples}; +use libfuzzer_sys::fuzz_target; + +// COVER dictionary builder tests +fuzz_target!(|samples: ArbitrarySamples| { + // train + assert_eq_rs_c!({ + let params = libzstd_rs_sys::ZDICT_legacy_params_t::default(); + + let mut dict = vec![0u8; samples.dict_size]; + let dict_size = ZDICT_trainFromBuffer_legacy( + dict.as_mut_ptr().cast(), + samples.dict_size, + samples.samples.as_ptr().cast(), + samples.sample_sizes.as_ptr(), + samples.nb_samples as u32, + std::mem::transmute(params), + ); + + (dict_size, dict) + }); +});