Fix CI diffing (#944)

* fix build_and_test_fuzzers to diff from origin/main

* fix fuzzbench_forkserver
This commit is contained in:
Andrea Fioraldi 2022-12-13 21:19:44 +01:00 committed by GitHub
parent 9e4a0513c6
commit 162de0ceaf
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 13 additions and 11 deletions

View File

@ -201,6 +201,7 @@ jobs:
- uses: actions/checkout@v3 - uses: actions/checkout@v3
with: with:
submodules: true # recursively checkout submodules submodules: true # recursively checkout submodules
fetch-depth: 0 # to diff with origin/main
- uses: Swatinem/rust-cache@v2 - uses: Swatinem/rust-cache@v2
- name: Build and run example fuzzers (Linux) - name: Build and run example fuzzers (Linux)
if: runner.os == 'Linux' if: runner.os == 'Linux'

View File

@ -19,7 +19,7 @@ use libafl::{
corpus::{Corpus, OnDiskCorpus}, corpus::{Corpus, OnDiskCorpus},
events::SimpleEventManager, events::SimpleEventManager,
executors::forkserver::{ForkserverExecutor, TimeoutForkserverExecutor}, executors::forkserver::{ForkserverExecutor, TimeoutForkserverExecutor},
feedback_and_fast, feedback_or, feedback_or,
feedbacks::{CrashFeedback, MaxMapFeedback, TimeFeedback}, feedbacks::{CrashFeedback, MaxMapFeedback, TimeFeedback},
fuzzer::{Fuzzer, StdFuzzer}, fuzzer::{Fuzzer, StdFuzzer},
inputs::BytesInput, inputs::BytesInput,
@ -262,13 +262,7 @@ fn fuzz(
); );
// A feedback to choose if an input is a solution or not // A feedback to choose if an input is a solution or not
// We want to do the same crash deduplication that AFL does let mut objective = CrashFeedback::new();
let mut objective = feedback_and_fast!(
// Must be a crash
CrashFeedback::new(),
// Take it onlt if trigger new coverage over crashes
MaxMapFeedback::new(&edges_observer)
);
// create a State from scratch // create a State from scratch
let mut state = StdState::new( let mut state = StdState::new(

View File

@ -10,7 +10,7 @@ if [[ -z "${RUN_ON_CI}" ]]; then
backtrace_fuzzers=$(find ./fuzzers/backtrace_baby_fuzzers -mindepth 1 -maxdepth 1 -type d) backtrace_fuzzers=$(find ./fuzzers/backtrace_baby_fuzzers -mindepth 1 -maxdepth 1 -type d)
else else
cargo build -p build_and_test_fuzzers cargo build -p build_and_test_fuzzers
fuzzers=$(cargo run -p build_and_test_fuzzers) fuzzers=$(cargo run -p build_and_test_fuzzers -- remotes/origin/main)
backtrace_fuzzers="" backtrace_fuzzers=""
fi fi

View File

@ -5,16 +5,23 @@ pub use diffing::*;
fn main() { fn main() {
let args: Vec<String> = env::args().collect(); let args: Vec<String> = env::args().collect();
let commit = if args.len() > 1 { &args[1] } else { "HEAD^" }; let commit = if args.len() > 1 {
&args[1]
} else {
"origin/main"
};
let files = get_diffing_files(commit); let files = get_diffing_files(commit);
let mut diff_crates = get_diffing_crates(&files); let mut diff_crates = get_diffing_crates(&files);
let all_crates = find_all_crates(); let all_crates = find_all_crates();
extend_diffing_crates_with_deps(&mut diff_crates, &all_crates); extend_diffing_crates_with_deps(&mut diff_crates, &all_crates);
let mut fuzzers = vec![];
for file in diff_crates { for file in diff_crates {
if file.starts_with("./fuzzers") || file.starts_with("fuzzers") { if file.starts_with("./fuzzers") || file.starts_with("fuzzers") {
print!("{} ", file.parent().unwrap().display()); fuzzers.push(file.parent().unwrap().display().to_string());
} }
} }
println!("{}", fuzzers.join("\n"));
} }