Fixing CI from #559 (#580)

* updated ref

* update symcc

* updated symcc

* CI for symcc

* updated symcc

* enabling git

* add runtime deps to makefile

* only linux

Co-authored-by: tokatoka <tokazerkje@outlook.com>
This commit is contained in:
Dominik Maier 2022-03-29 14:57:38 +02:00 committed by GitHub
parent 88a14cbbd2
commit 5df130188a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 69 additions and 18 deletions

View File

@ -0,0 +1,52 @@
# Variables
[env]
FUZZER_NAME='libfuzzer_stb_image_concolic'
# Compilers
[tasks.runtime]
linux_alias = "runtime_unix"
mac_alias = "unsupported"
windows_alias = "unsupported"
[tasks.runtime_unix]
condition = { files_not_exist = ["runtime/target/libSymRuntime.so"] }
script_runner = "@shell"
script = '''
cd runtime
cargo build --release
'''
# Build the fuzzer
[tasks.fuzzer]
linux_alias = "fuzzer_unix"
mac_alias = "unsupported"
windows_alias = "unsupported"
[tasks.fuzzer_unix]
dependencies = ["runtime"]
script_runner = "@shell"
script = '''
cd fuzzer
cargo build --release
'''
[tasks.test]
alias = "fuzzer"
[tasks.unsupported]
# Do nothing
script_runner = "@shell"
script='''
echo "Not supported on this platform."
'''
# Clean up
[tasks.clean]
# Disable default `clean` definition
clear = true
script='''
cd fuzzer
cargo clean
cd ../runtime
cargo clean
'''

View File

@ -5,7 +5,11 @@ use mimalloc::MiMalloc;
static GLOBAL: MiMalloc = MiMalloc; static GLOBAL: MiMalloc = MiMalloc;
use clap::{self, StructOpt}; use clap::{self, StructOpt};
use std::{env, path::PathBuf}; use std::{
env,
path::PathBuf,
process::{Child, Command, Stdio},
};
use libafl::{ use libafl::{
bolts::{ bolts::{
@ -146,7 +150,7 @@ fn fuzz(
println!("We're a client, let's fuzz :)"); println!("We're a client, let's fuzz :)");
// A minimization+queue policy to get testcasess from the corpus // A minimization+queue policy to get testcasess from the corpus
let scheduler = IndexesLenTimeMinimizerScheduler::new(QueueScheduler::new()); let scheduler = IndexesLenTimeMinimizerScheduler::new(PowerQueueScheduler::new());
// A fuzzer with feedbacks and a corpus scheduler // A fuzzer with feedbacks and a corpus scheduler
let mut fuzzer = StdFuzzer::new(scheduler, feedback, objective); let mut fuzzer = StdFuzzer::new(scheduler, feedback, objective);
@ -240,12 +244,8 @@ fn fuzz(
Ok(()) Ok(())
} }
use std::process::{Child, Command, Stdio};
#[derive(Default, Debug)] #[derive(Default, Debug)]
pub struct MyCommandConfigurator { pub struct MyCommandConfigurator;
command: Option<Command>,
}
impl CommandConfigurator for MyCommandConfigurator { impl CommandConfigurator for MyCommandConfigurator {
fn spawn_child<I: Input + HasTargetBytes>(&mut self, input: &I) -> Result<Child, Error> { fn spawn_child<I: Input + HasTargetBytes>(&mut self, input: &I) -> Result<Child, Error> {

View File

@ -1 +1,2 @@
libpng-* libpng-*
libpng_harness

View File

@ -1,5 +1,5 @@
This is a support crate for [symcc_runtime](https://crates.io/crates/symcc_runtime). This is a support crate for [symcc_runtime](https://crates.io/crates/symcc_runtime).
It defines a stable URL and commit hash for th [LibAFL](https://github.com/AFLplusplus/LibAFL) [fork](https://github.com/AFLplusplus/symcc) of [SymCC](https://github.com/eurecom-s3/symcc). It defines a stable URL and commit hash for the [LibAFL](https://github.com/AFLplusplus/LibAFL) [fork](https://github.com/AFLplusplus/symcc) of [SymCC](https://github.com/eurecom-s3/symcc).
It also provides convenient methods to clone and build SymCC to be used in build scripts in LibAFL based fuzzers. It also provides convenient methods to clone and build SymCC to be used in build scripts in LibAFL-based fuzzers.
[Documentation](https://docs.rs/symcc_libafl) [Documentation](https://docs.rs/symcc_libafl)

View File

@ -4,7 +4,7 @@
/// The URL of the `LibAFL` `SymCC` fork. /// The URL of the `LibAFL` `SymCC` fork.
pub const SYMCC_REPO_URL: &str = "https://github.com/AFLplusplus/symcc.git"; pub const SYMCC_REPO_URL: &str = "https://github.com/AFLplusplus/symcc.git";
/// The commit of the `LibAFL` `SymCC` fork. /// The commit of the `LibAFL` `SymCC` fork.
pub const SYMCC_REPO_COMMIT: &str = "45cde0269ae22aef4cca2e1fb98c3b24f7bb2984"; pub const SYMCC_REPO_COMMIT: &str = "5cccc33456c48ad83008eb618e7da5d005c72d89";
#[cfg(feature = "clone")] #[cfg(feature = "clone")]
mod clone { mod clone {

@ -1 +1 @@
Subproject commit 45cde0269ae22aef4cca2e1fb98c3b24f7bb2984 Subproject commit 5cccc33456c48ad83008eb618e7da5d005c72d89

View File

@ -16,7 +16,7 @@ if [ ! -d "symcc" ]; then
echo "cloning symcc" echo "cloning symcc"
git clone https://github.com/AFLplusplus/symcc.git symcc git clone https://github.com/AFLplusplus/symcc.git symcc
cd symcc cd symcc
git checkout 45cde0269ae22aef4cca2e1fb98c3b24f7bb2984 git checkout 5cccc33456c48ad83008eb618e7da5d005c72d89
cd .. cd ..
fi fi

View File

@ -7,14 +7,12 @@ cd "$SCRIPT_DIR/.."
fuzzers=$(find ./fuzzers -maxdepth 1 -type d) fuzzers=$(find ./fuzzers -maxdepth 1 -type d)
backtrace_fuzzers=$(find ./fuzzers/backtrace_baby_fuzzers -maxdepth 1 -type d) backtrace_fuzzers=$(find ./fuzzers/backtrace_baby_fuzzers -maxdepth 1 -type d)
extra_fuzzer_and_runtime="
./fuzzers/libfuzzer_stb_image_concolic/runtime
./fuzzers/libfuzzer_stb_image_concolic/fuzzer
"
libafl=$(pwd) libafl=$(pwd)
for fuzzer in $(echo $fuzzers $backtrace_fuzzers $extra_fuzzer_and_runtime); git submodule init && git submodule update
for fuzzer in $(echo $fuzzers $backtrace_fuzzers);
do do
cd $fuzzer cd $fuzzer
# Clippy checks # Clippy checks