Fix CI diffing (#944)
* fix build_and_test_fuzzers to diff from origin/main * fix fuzzbench_forkserver
This commit is contained in:
parent
9e4a0513c6
commit
162de0ceaf
1
.github/workflows/build_and_test.yml
vendored
1
.github/workflows/build_and_test.yml
vendored
@ -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'
|
||||||
|
@ -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(
|
||||||
|
@ -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
|
||||||
|
|
||||||
|
@ -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"));
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user