Move HasMetadata/HasNamedMetadata trait to libafl_bolts (#2016)
* move around * fmt * rev * fmt * doc job * name * move to libafl * separate even more * miri
This commit is contained in:
parent
ff938261df
commit
e8fe5bb614
68
.github/workflows/build_and_test.yml
vendored
68
.github/workflows/build_and_test.yml
vendored
@ -83,6 +83,64 @@ jobs:
|
|||||||
run: pwd && ls & cd libafl_cc && cargo build --release
|
run: pwd && ls & cd libafl_cc && cargo build --release
|
||||||
|
|
||||||
|
|
||||||
|
ubuntu-doc:
|
||||||
|
runs-on: ubuntu-22.04
|
||||||
|
steps:
|
||||||
|
- name: Remove Dotnet & Haskell
|
||||||
|
run: rm -rf /usr/share/dotnet && rm -rf /opt/ghc
|
||||||
|
- uses: actions-rs/toolchain@v1
|
||||||
|
with:
|
||||||
|
profile: minimal
|
||||||
|
toolchain: stable
|
||||||
|
- name: Remove existing clang and LLVM
|
||||||
|
run: sudo apt purge llvm* clang* lld* lldb* opt*
|
||||||
|
- name: Install and cache deps
|
||||||
|
run: sudo apt update && sudo apt install ninja-build shellcheck libgtk-3-dev gcc-arm-linux-gnueabi g++-arm-linux-gnueabi libslirp-dev libz3-dev
|
||||||
|
- name: Add nightly rustfmt and clippy
|
||||||
|
run: rustup toolchain install nightly --component rustfmt --component clippy --component miri --allow-downgrade
|
||||||
|
- name: Install ucd-generate
|
||||||
|
run: cargo install -f ucd-generate
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
- uses: Swatinem/rust-cache@v2
|
||||||
|
- name: Install LLVM and Clang
|
||||||
|
uses: KyleMayes/install-llvm-action@v1
|
||||||
|
with:
|
||||||
|
directory: ${{ runner.temp }}/llvm
|
||||||
|
version: 17
|
||||||
|
# ---- doc check ----
|
||||||
|
- name: Build Docs
|
||||||
|
run: RUSTFLAGS="--cfg docsrs" cargo +nightly doc --all-features
|
||||||
|
- name: Test Docs
|
||||||
|
run: RUSTFLAGS="--cfg docsrs" cargo +nightly test --doc --all-features
|
||||||
|
|
||||||
|
ubuntu-miri:
|
||||||
|
runs-on: ubuntu-22.04
|
||||||
|
steps:
|
||||||
|
- name: Remove Dotnet & Haskell
|
||||||
|
run: rm -rf /usr/share/dotnet && rm -rf /opt/ghc
|
||||||
|
- uses: actions-rs/toolchain@v1
|
||||||
|
with:
|
||||||
|
profile: minimal
|
||||||
|
toolchain: stable
|
||||||
|
- name: Remove existing clang and LLVM
|
||||||
|
run: sudo apt purge llvm* clang* lld* lldb* opt*
|
||||||
|
- name: Install and cache deps
|
||||||
|
run: sudo apt update && sudo apt install ninja-build shellcheck libgtk-3-dev gcc-arm-linux-gnueabi g++-arm-linux-gnueabi libslirp-dev libz3-dev
|
||||||
|
- name: Add nightly rustfmt and clippy
|
||||||
|
run: rustup toolchain install nightly --component rustfmt --component clippy --component miri --allow-downgrade
|
||||||
|
- name: Install ucd-generate
|
||||||
|
run: cargo install -f ucd-generate
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
- uses: Swatinem/rust-cache@v2
|
||||||
|
- name: Install LLVM and Clang
|
||||||
|
uses: KyleMayes/install-llvm-action@v1
|
||||||
|
with:
|
||||||
|
directory: ${{ runner.temp }}/llvm
|
||||||
|
version: 17
|
||||||
|
# --- miri undefined behavior test --
|
||||||
|
- name: Run miri tests
|
||||||
|
run: RUST_BACKTRACE=1 MIRIFLAGS="-Zmiri-disable-isolation" cargo +nightly miri test
|
||||||
|
|
||||||
ubuntu:
|
ubuntu:
|
||||||
runs-on: ubuntu-22.04
|
runs-on: ubuntu-22.04
|
||||||
steps:
|
steps:
|
||||||
@ -119,22 +177,12 @@ jobs:
|
|||||||
run: clang-format -n -Werror --style=file $(find . -type f \( -name '*.cpp' -o -iname '*.hpp' -o -name '*.cc' -o -name '*.cxx' -o -name '*.cc' -o -name '*.h' \) | grep -v '/target/' | grep -v 'libpng-1\.6\.37' | grep -v 'stb_image\.h' | grep -v 'dlmalloc\.c' | grep -v 'QEMU-Nyx')
|
run: clang-format -n -Werror --style=file $(find . -type f \( -name '*.cpp' -o -iname '*.hpp' -o -name '*.cc' -o -name '*.cxx' -o -name '*.cc' -o -name '*.h' \) | grep -v '/target/' | grep -v 'libpng-1\.6\.37' | grep -v 'stb_image\.h' | grep -v 'dlmalloc\.c' | grep -v 'QEMU-Nyx')
|
||||||
- name: run shellcheck
|
- name: run shellcheck
|
||||||
run: shellcheck ./scripts/*.sh
|
run: shellcheck ./scripts/*.sh
|
||||||
|
|
||||||
# ---- doc check ----
|
|
||||||
- name: Build Docs
|
|
||||||
run: RUSTFLAGS="--cfg docsrs" cargo +nightly doc --all-features
|
|
||||||
- name: Test Docs
|
|
||||||
run: RUSTFLAGS="--cfg docsrs" cargo +nightly test --doc --all-features
|
|
||||||
# ---- build normal and examples ----
|
# ---- build normal and examples ----
|
||||||
- name: Run a normal build
|
- name: Run a normal build
|
||||||
run: cargo build --verbose
|
run: cargo build --verbose
|
||||||
- name: Build examples
|
- name: Build examples
|
||||||
run: cargo build --examples --verbose
|
run: cargo build --examples --verbose
|
||||||
|
|
||||||
# --- miri undefined behavior test --
|
|
||||||
- name: Run miri tests
|
|
||||||
run: RUST_BACKTRACE=1 MIRIFLAGS="-Zmiri-disable-isolation" cargo +nightly miri test
|
|
||||||
|
|
||||||
ubuntu-clippy:
|
ubuntu-clippy:
|
||||||
runs-on: ubuntu-22.04
|
runs-on: ubuntu-22.04
|
||||||
steps:
|
steps:
|
||||||
|
@ -18,7 +18,8 @@ use libafl::{
|
|||||||
observers::StdMapObserver,
|
observers::StdMapObserver,
|
||||||
schedulers::QueueScheduler,
|
schedulers::QueueScheduler,
|
||||||
stages::{mutational::StdMutationalStage, GeneralizationStage},
|
stages::{mutational::StdMutationalStage, GeneralizationStage},
|
||||||
state::{HasMetadata, StdState},
|
state::StdState,
|
||||||
|
HasMetadata,
|
||||||
};
|
};
|
||||||
use libafl_bolts::{current_nanos, rands::StdRand, tuples::tuple_list, AsSlice};
|
use libafl_bolts::{current_nanos, rands::StdRand, tuples::tuple_list, AsSlice};
|
||||||
|
|
||||||
|
@ -18,7 +18,8 @@ use libafl::{
|
|||||||
observers::StdMapObserver,
|
observers::StdMapObserver,
|
||||||
schedulers::QueueScheduler,
|
schedulers::QueueScheduler,
|
||||||
stages::mutational::StdMutationalStage,
|
stages::mutational::StdMutationalStage,
|
||||||
state::{HasMetadata, StdState},
|
state::StdState,
|
||||||
|
HasMetadata,
|
||||||
};
|
};
|
||||||
use libafl_bolts::{current_nanos, rands::StdRand, tuples::tuple_list};
|
use libafl_bolts::{current_nanos, rands::StdRand, tuples::tuple_list};
|
||||||
|
|
||||||
|
@ -15,7 +15,8 @@ use libafl::{
|
|||||||
observers::{HitcountsMapObserver, StdMapObserver, TimeObserver},
|
observers::{HitcountsMapObserver, StdMapObserver, TimeObserver},
|
||||||
schedulers::{IndexesLenTimeMinimizerScheduler, QueueScheduler},
|
schedulers::{IndexesLenTimeMinimizerScheduler, QueueScheduler},
|
||||||
stages::mutational::StdMutationalStage,
|
stages::mutational::StdMutationalStage,
|
||||||
state::{HasCorpus, HasMetadata, StdState},
|
state::{HasCorpus, StdState},
|
||||||
|
HasMetadata,
|
||||||
};
|
};
|
||||||
use libafl_bolts::{
|
use libafl_bolts::{
|
||||||
current_nanos,
|
current_nanos,
|
||||||
|
@ -15,7 +15,8 @@ use libafl::{
|
|||||||
observers::{HitcountsMapObserver, StdMapObserver, TimeObserver},
|
observers::{HitcountsMapObserver, StdMapObserver, TimeObserver},
|
||||||
schedulers::{IndexesLenTimeMinimizerScheduler, QueueScheduler},
|
schedulers::{IndexesLenTimeMinimizerScheduler, QueueScheduler},
|
||||||
stages::mutational::StdMutationalStage,
|
stages::mutational::StdMutationalStage,
|
||||||
state::{HasCorpus, HasMetadata, StdState},
|
state::{HasCorpus, StdState},
|
||||||
|
HasMetadata,
|
||||||
};
|
};
|
||||||
use libafl_bolts::{
|
use libafl_bolts::{
|
||||||
current_nanos,
|
current_nanos,
|
||||||
|
@ -23,8 +23,8 @@ use libafl::{
|
|||||||
observers::{HitcountsMapObserver, StdMapObserver, TimeObserver},
|
observers::{HitcountsMapObserver, StdMapObserver, TimeObserver},
|
||||||
schedulers::{IndexesLenTimeMinimizerScheduler, QueueScheduler},
|
schedulers::{IndexesLenTimeMinimizerScheduler, QueueScheduler},
|
||||||
stages::{ShadowTracingStage, StdMutationalStage},
|
stages::{ShadowTracingStage, StdMutationalStage},
|
||||||
state::{HasCorpus, HasMetadata, StdState},
|
state::{HasCorpus, StdState},
|
||||||
Error,
|
Error, HasMetadata,
|
||||||
};
|
};
|
||||||
#[cfg(unix)]
|
#[cfg(unix)]
|
||||||
use libafl::{feedback_and_fast, feedbacks::ConstFeedback};
|
use libafl::{feedback_and_fast, feedbacks::ConstFeedback};
|
||||||
|
@ -29,8 +29,8 @@ use libafl::{
|
|||||||
observers::{HitcountsMapObserver, StdMapObserver, TimeObserver},
|
observers::{HitcountsMapObserver, StdMapObserver, TimeObserver},
|
||||||
schedulers::{IndexesLenTimeMinimizerScheduler, QueueScheduler},
|
schedulers::{IndexesLenTimeMinimizerScheduler, QueueScheduler},
|
||||||
stages::{ShadowTracingStage, StdMutationalStage},
|
stages::{ShadowTracingStage, StdMutationalStage},
|
||||||
state::{HasCorpus, HasMetadata, StdState},
|
state::{HasCorpus, StdState},
|
||||||
Error,
|
Error, HasMetadata,
|
||||||
};
|
};
|
||||||
#[cfg(unix)]
|
#[cfg(unix)]
|
||||||
use libafl::{feedback_and_fast, feedbacks::ConstFeedback};
|
use libafl::{feedback_and_fast, feedbacks::ConstFeedback};
|
||||||
|
@ -23,8 +23,8 @@ use libafl::{
|
|||||||
observers::{HitcountsMapObserver, StdMapObserver, TimeObserver},
|
observers::{HitcountsMapObserver, StdMapObserver, TimeObserver},
|
||||||
schedulers::{IndexesLenTimeMinimizerScheduler, QueueScheduler},
|
schedulers::{IndexesLenTimeMinimizerScheduler, QueueScheduler},
|
||||||
stages::{ShadowTracingStage, StdMutationalStage},
|
stages::{ShadowTracingStage, StdMutationalStage},
|
||||||
state::{HasCorpus, HasMetadata, StdState},
|
state::{HasCorpus, StdState},
|
||||||
Error,
|
Error, HasMetadata,
|
||||||
};
|
};
|
||||||
#[cfg(unix)]
|
#[cfg(unix)]
|
||||||
use libafl::{feedback_and_fast, feedbacks::ConstFeedback};
|
use libafl::{feedback_and_fast, feedbacks::ConstFeedback};
|
||||||
|
@ -36,8 +36,8 @@ use libafl::{
|
|||||||
calibrate::CalibrationStage, power::StdPowerMutationalStage, StdMutationalStage,
|
calibrate::CalibrationStage, power::StdPowerMutationalStage, StdMutationalStage,
|
||||||
TracingStage,
|
TracingStage,
|
||||||
},
|
},
|
||||||
state::{HasCorpus, HasMetadata, StdState},
|
state::{HasCorpus, StdState},
|
||||||
Error,
|
Error, HasMetadata,
|
||||||
};
|
};
|
||||||
use libafl_bolts::{
|
use libafl_bolts::{
|
||||||
current_nanos, current_time,
|
current_nanos, current_time,
|
||||||
|
@ -39,8 +39,8 @@ use libafl::{
|
|||||||
calibrate::CalibrationStage, power::StdPowerMutationalStage, StdMutationalStage,
|
calibrate::CalibrationStage, power::StdPowerMutationalStage, StdMutationalStage,
|
||||||
TracingStage,
|
TracingStage,
|
||||||
},
|
},
|
||||||
state::{HasCorpus, HasMetadata, StdState},
|
state::{HasCorpus, StdState},
|
||||||
Error,
|
Error, HasMetadata,
|
||||||
};
|
};
|
||||||
use libafl_bolts::{
|
use libafl_bolts::{
|
||||||
current_nanos, current_time,
|
current_nanos, current_time,
|
||||||
|
@ -34,8 +34,8 @@ use libafl::{
|
|||||||
calibrate::CalibrationStage, power::StdPowerMutationalStage, ShadowTracingStage,
|
calibrate::CalibrationStage, power::StdPowerMutationalStage, ShadowTracingStage,
|
||||||
StdMutationalStage,
|
StdMutationalStage,
|
||||||
},
|
},
|
||||||
state::{HasCorpus, HasMetadata, StdState},
|
state::{HasCorpus, StdState},
|
||||||
Error,
|
Error, HasMetadata,
|
||||||
};
|
};
|
||||||
use libafl_bolts::{
|
use libafl_bolts::{
|
||||||
current_nanos, current_time,
|
current_nanos, current_time,
|
||||||
|
@ -29,8 +29,8 @@ use libafl::{
|
|||||||
calibrate::CalibrationStage, power::StdPowerMutationalStage, StdMutationalStage,
|
calibrate::CalibrationStage, power::StdPowerMutationalStage, StdMutationalStage,
|
||||||
TracingStage,
|
TracingStage,
|
||||||
},
|
},
|
||||||
state::{HasCorpus, HasMetadata, StdState},
|
state::{HasCorpus, StdState},
|
||||||
Error,
|
Error, HasMetadata,
|
||||||
};
|
};
|
||||||
use libafl_bolts::{
|
use libafl_bolts::{
|
||||||
current_nanos, current_time,
|
current_nanos, current_time,
|
||||||
|
@ -29,8 +29,8 @@ use libafl::{
|
|||||||
calibrate::CalibrationStage, mutational::MultiMutationalStage,
|
calibrate::CalibrationStage, mutational::MultiMutationalStage,
|
||||||
power::StdPowerMutationalStage, ColorizationStage, IfStage,
|
power::StdPowerMutationalStage, ColorizationStage, IfStage,
|
||||||
},
|
},
|
||||||
state::{HasCorpus, HasCurrentTestcase, HasMetadata, StdState},
|
state::{HasCorpus, HasCurrentTestcase, StdState},
|
||||||
Error,
|
Error, HasMetadata,
|
||||||
};
|
};
|
||||||
use libafl_bolts::{
|
use libafl_bolts::{
|
||||||
current_nanos, current_time,
|
current_nanos, current_time,
|
||||||
|
@ -33,8 +33,8 @@ use libafl::{
|
|||||||
calibrate::CalibrationStage, power::StdPowerMutationalStage, ShadowTracingStage,
|
calibrate::CalibrationStage, power::StdPowerMutationalStage, ShadowTracingStage,
|
||||||
StdMutationalStage,
|
StdMutationalStage,
|
||||||
},
|
},
|
||||||
state::{HasCorpus, HasMetadata, StdState},
|
state::{HasCorpus, StdState},
|
||||||
Error,
|
Error, HasMetadata,
|
||||||
};
|
};
|
||||||
use libafl_bolts::{
|
use libafl_bolts::{
|
||||||
current_nanos, current_time,
|
current_nanos, current_time,
|
||||||
|
@ -42,8 +42,8 @@ use libafl::{
|
|||||||
calibrate::CalibrationStage, power::StdPowerMutationalStage, GeneralizationStage,
|
calibrate::CalibrationStage, power::StdPowerMutationalStage, GeneralizationStage,
|
||||||
StdMutationalStage, TracingStage,
|
StdMutationalStage, TracingStage,
|
||||||
},
|
},
|
||||||
state::{HasCorpus, HasMetadata, StdState},
|
state::{HasCorpus, StdState},
|
||||||
Error,
|
Error, HasMetadata,
|
||||||
};
|
};
|
||||||
use libafl_bolts::{
|
use libafl_bolts::{
|
||||||
current_nanos, current_time,
|
current_nanos, current_time,
|
||||||
|
@ -28,8 +28,8 @@ use libafl::{
|
|||||||
observers::{HitcountsMapObserver, StdMapObserver, TimeObserver},
|
observers::{HitcountsMapObserver, StdMapObserver, TimeObserver},
|
||||||
schedulers::{IndexesLenTimeMinimizerScheduler, QueueScheduler},
|
schedulers::{IndexesLenTimeMinimizerScheduler, QueueScheduler},
|
||||||
stages::{StdMutationalStage, TracingStage},
|
stages::{StdMutationalStage, TracingStage},
|
||||||
state::{HasCorpus, HasMetadata, StdState},
|
state::{HasCorpus, StdState},
|
||||||
Error,
|
Error, HasMetadata,
|
||||||
};
|
};
|
||||||
use libafl_bolts::{
|
use libafl_bolts::{
|
||||||
core_affinity::Cores,
|
core_affinity::Cores,
|
||||||
|
@ -22,8 +22,8 @@ use libafl::{
|
|||||||
observers::StdMapObserver,
|
observers::StdMapObserver,
|
||||||
schedulers::RandScheduler,
|
schedulers::RandScheduler,
|
||||||
stages::mutational::StdMutationalStage,
|
stages::mutational::StdMutationalStage,
|
||||||
state::{HasCorpus, HasMetadata, StdState},
|
state::{HasCorpus, StdState},
|
||||||
Error,
|
Error, HasMetadata,
|
||||||
};
|
};
|
||||||
use libafl_bolts::{
|
use libafl_bolts::{
|
||||||
current_nanos,
|
current_nanos,
|
||||||
|
@ -27,8 +27,8 @@ use libafl::{
|
|||||||
powersched::PowerSchedule, IndexesLenTimeMinimizerScheduler, StdWeightedScheduler,
|
powersched::PowerSchedule, IndexesLenTimeMinimizerScheduler, StdWeightedScheduler,
|
||||||
},
|
},
|
||||||
stages::{calibrate::CalibrationStage, power::StdPowerMutationalStage},
|
stages::{calibrate::CalibrationStage, power::StdPowerMutationalStage},
|
||||||
state::{HasCorpus, HasMetadata, StdState},
|
state::{HasCorpus, StdState},
|
||||||
Error,
|
Error, HasMetadata,
|
||||||
};
|
};
|
||||||
use libafl_bolts::{
|
use libafl_bolts::{
|
||||||
current_nanos,
|
current_nanos,
|
||||||
|
@ -26,8 +26,8 @@ use libafl::{
|
|||||||
observers::{HitcountsMapObserver, StdMapObserver, TimeObserver},
|
observers::{HitcountsMapObserver, StdMapObserver, TimeObserver},
|
||||||
schedulers::{CoverageAccountingScheduler, QueueScheduler},
|
schedulers::{CoverageAccountingScheduler, QueueScheduler},
|
||||||
stages::mutational::StdMutationalStage,
|
stages::mutational::StdMutationalStage,
|
||||||
state::{HasCorpus, HasMetadata, StdState},
|
state::{HasCorpus, StdState},
|
||||||
Error,
|
Error, HasMetadata,
|
||||||
};
|
};
|
||||||
use libafl_bolts::{
|
use libafl_bolts::{
|
||||||
core_affinity::Cores,
|
core_affinity::Cores,
|
||||||
|
@ -27,8 +27,8 @@ use libafl::{
|
|||||||
powersched::PowerSchedule, IndexesLenTimeMinimizerScheduler, StdWeightedScheduler,
|
powersched::PowerSchedule, IndexesLenTimeMinimizerScheduler, StdWeightedScheduler,
|
||||||
},
|
},
|
||||||
stages::{calibrate::CalibrationStage, power::StdPowerMutationalStage, stats::AflStatsStage},
|
stages::{calibrate::CalibrationStage, power::StdPowerMutationalStage, stats::AflStatsStage},
|
||||||
state::{HasCorpus, HasMetadata, StdState},
|
state::{HasCorpus, StdState},
|
||||||
Error,
|
Error, HasMetadata,
|
||||||
};
|
};
|
||||||
use libafl_bolts::{
|
use libafl_bolts::{
|
||||||
current_nanos,
|
current_nanos,
|
||||||
|
@ -26,8 +26,8 @@ use libafl::{
|
|||||||
observers::{HitcountsMapObserver, TimeObserver},
|
observers::{HitcountsMapObserver, TimeObserver},
|
||||||
schedulers::{IndexesLenTimeMinimizerScheduler, QueueScheduler},
|
schedulers::{IndexesLenTimeMinimizerScheduler, QueueScheduler},
|
||||||
stages::mutational::StdMutationalStage,
|
stages::mutational::StdMutationalStage,
|
||||||
state::{HasCorpus, HasMetadata, StdState},
|
state::{HasCorpus, StdState},
|
||||||
Error,
|
Error, HasMetadata,
|
||||||
};
|
};
|
||||||
use libafl_bolts::{
|
use libafl_bolts::{
|
||||||
core_affinity::{CoreId, Cores},
|
core_affinity::{CoreId, Cores},
|
||||||
|
@ -30,8 +30,8 @@ use libafl::{
|
|||||||
powersched::PowerSchedule, IndexesLenTimeMinimizerScheduler, StdWeightedScheduler,
|
powersched::PowerSchedule, IndexesLenTimeMinimizerScheduler, StdWeightedScheduler,
|
||||||
},
|
},
|
||||||
stages::{calibrate::CalibrationStage, power::StdPowerMutationalStage},
|
stages::{calibrate::CalibrationStage, power::StdPowerMutationalStage},
|
||||||
state::{HasCorpus, HasMetadata, StdState},
|
state::{HasCorpus, StdState},
|
||||||
Error,
|
Error, HasMetadata,
|
||||||
};
|
};
|
||||||
use libafl_bolts::{
|
use libafl_bolts::{
|
||||||
current_nanos,
|
current_nanos,
|
||||||
|
@ -26,8 +26,8 @@ use libafl::{
|
|||||||
observers::{HitcountsMapObserver, TimeObserver},
|
observers::{HitcountsMapObserver, TimeObserver},
|
||||||
schedulers::{IndexesLenTimeMinimizerScheduler, QueueScheduler},
|
schedulers::{IndexesLenTimeMinimizerScheduler, QueueScheduler},
|
||||||
stages::mutational::StdMutationalStage,
|
stages::mutational::StdMutationalStage,
|
||||||
state::{HasCorpus, HasMetadata, StdState},
|
state::{HasCorpus, StdState},
|
||||||
Error,
|
Error, HasMetadata,
|
||||||
};
|
};
|
||||||
use libafl_bolts::{
|
use libafl_bolts::{
|
||||||
core_affinity::Cores,
|
core_affinity::Cores,
|
||||||
|
@ -29,8 +29,8 @@ use libafl::{
|
|||||||
observers::{HitcountsMapObserver, TimeObserver},
|
observers::{HitcountsMapObserver, TimeObserver},
|
||||||
schedulers::{IndexesLenTimeMinimizerScheduler, QueueScheduler},
|
schedulers::{IndexesLenTimeMinimizerScheduler, QueueScheduler},
|
||||||
stages::mutational::StdMutationalStage,
|
stages::mutational::StdMutationalStage,
|
||||||
state::{HasCorpus, HasMetadata, StdState},
|
state::{HasCorpus, StdState},
|
||||||
Error,
|
Error, HasMetadata,
|
||||||
};
|
};
|
||||||
use libafl_bolts::{
|
use libafl_bolts::{
|
||||||
core_affinity::Cores,
|
core_affinity::Cores,
|
||||||
|
@ -27,8 +27,8 @@ use libafl::{
|
|||||||
powersched::PowerSchedule, IndexesLenTimeMinimizerScheduler, StdWeightedScheduler,
|
powersched::PowerSchedule, IndexesLenTimeMinimizerScheduler, StdWeightedScheduler,
|
||||||
},
|
},
|
||||||
stages::{calibrate::CalibrationStage, power::StdPowerMutationalStage},
|
stages::{calibrate::CalibrationStage, power::StdPowerMutationalStage},
|
||||||
state::{HasCorpus, HasMetadata, StdState},
|
state::{HasCorpus, StdState},
|
||||||
Error,
|
Error, HasMetadata,
|
||||||
};
|
};
|
||||||
use libafl_bolts::{
|
use libafl_bolts::{
|
||||||
current_nanos,
|
current_nanos,
|
||||||
|
@ -23,8 +23,8 @@ use libafl::{
|
|||||||
none_input_converter,
|
none_input_converter,
|
||||||
schedulers::QueueScheduler,
|
schedulers::QueueScheduler,
|
||||||
stages::{mutational::StdMutationalStage, sync::SyncFromBrokerStage},
|
stages::{mutational::StdMutationalStage, sync::SyncFromBrokerStage},
|
||||||
state::{HasMetadata, StdState},
|
state::StdState,
|
||||||
Error,
|
Error, HasMetadata,
|
||||||
};
|
};
|
||||||
use libafl_bolts::{
|
use libafl_bolts::{
|
||||||
core_affinity::Cores,
|
core_affinity::Cores,
|
||||||
|
@ -26,8 +26,8 @@ use libafl::{
|
|||||||
calibrate::CalibrationStage, power::StdPowerMutationalStage, ShadowTracingStage,
|
calibrate::CalibrationStage, power::StdPowerMutationalStage, ShadowTracingStage,
|
||||||
StagesTuple, StdMutationalStage,
|
StagesTuple, StdMutationalStage,
|
||||||
},
|
},
|
||||||
state::{HasCorpus, HasMetadata, StdState, UsesState},
|
state::{HasCorpus, StdState, UsesState},
|
||||||
Error,
|
Error, HasMetadata,
|
||||||
};
|
};
|
||||||
#[cfg(not(feature = "simplemgr"))]
|
#[cfg(not(feature = "simplemgr"))]
|
||||||
use libafl_bolts::shmem::StdShMemProvider;
|
use libafl_bolts::shmem::StdShMemProvider;
|
||||||
|
@ -5,8 +5,8 @@ use libafl::{
|
|||||||
feedbacks::{Feedback, MapIndexesMetadata},
|
feedbacks::{Feedback, MapIndexesMetadata},
|
||||||
observers::ObserversTuple,
|
observers::ObserversTuple,
|
||||||
schedulers::{MinimizerScheduler, TestcaseScore},
|
schedulers::{MinimizerScheduler, TestcaseScore},
|
||||||
state::{HasCorpus, HasMetadata, State},
|
state::{HasCorpus, State},
|
||||||
Error,
|
Error, HasMetadata,
|
||||||
};
|
};
|
||||||
use libafl_bolts::{Named, SerdeAny};
|
use libafl_bolts::{Named, SerdeAny};
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
|
149
libafl/src/common/mod.rs
Normal file
149
libafl/src/common/mod.rs
Normal file
@ -0,0 +1,149 @@
|
|||||||
|
//! This module defines trait shared across different `LibAFL` modules
|
||||||
|
|
||||||
|
use alloc::boxed::Box;
|
||||||
|
use core::any::type_name;
|
||||||
|
|
||||||
|
use libafl_bolts::{
|
||||||
|
serdeany::{NamedSerdeAnyMap, SerdeAny, SerdeAnyMap},
|
||||||
|
Error,
|
||||||
|
};
|
||||||
|
/// Trait for elements offering metadata
|
||||||
|
pub trait HasMetadata {
|
||||||
|
/// A map, storing all metadata
|
||||||
|
fn metadata_map(&self) -> &SerdeAnyMap;
|
||||||
|
/// A map, storing all metadata (mutable)
|
||||||
|
fn metadata_map_mut(&mut self) -> &mut SerdeAnyMap;
|
||||||
|
|
||||||
|
/// Add a metadata to the metadata map
|
||||||
|
#[inline]
|
||||||
|
fn add_metadata<M>(&mut self, meta: M)
|
||||||
|
where
|
||||||
|
M: SerdeAny,
|
||||||
|
{
|
||||||
|
self.metadata_map_mut().insert(meta);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Gets metadata, or inserts it using the given construction function `default`
|
||||||
|
fn metadata_or_insert_with<M>(&mut self, default: impl FnOnce() -> M) -> &mut M
|
||||||
|
where
|
||||||
|
M: SerdeAny,
|
||||||
|
{
|
||||||
|
self.metadata_map_mut().get_or_insert_with::<M>(default)
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Remove a metadata from the metadata map
|
||||||
|
#[inline]
|
||||||
|
fn remove_metadata<M>(&mut self) -> Option<Box<M>>
|
||||||
|
where
|
||||||
|
M: SerdeAny,
|
||||||
|
{
|
||||||
|
self.metadata_map_mut().remove::<M>()
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Check for a metadata
|
||||||
|
///
|
||||||
|
/// # Note
|
||||||
|
/// For performance reasons, you likely want to use [`Self::metadata_or_insert_with`] instead
|
||||||
|
#[inline]
|
||||||
|
fn has_metadata<M>(&self) -> bool
|
||||||
|
where
|
||||||
|
M: SerdeAny,
|
||||||
|
{
|
||||||
|
self.metadata_map().get::<M>().is_some()
|
||||||
|
}
|
||||||
|
|
||||||
|
/// To get metadata
|
||||||
|
#[inline]
|
||||||
|
fn metadata<M>(&self) -> Result<&M, Error>
|
||||||
|
where
|
||||||
|
M: SerdeAny,
|
||||||
|
{
|
||||||
|
self.metadata_map()
|
||||||
|
.get::<M>()
|
||||||
|
.ok_or_else(|| Error::key_not_found(format!("{} not found", type_name::<M>())))
|
||||||
|
}
|
||||||
|
|
||||||
|
/// To get mutable metadata
|
||||||
|
#[inline]
|
||||||
|
fn metadata_mut<M>(&mut self) -> Result<&mut M, Error>
|
||||||
|
where
|
||||||
|
M: SerdeAny,
|
||||||
|
{
|
||||||
|
self.metadata_map_mut()
|
||||||
|
.get_mut::<M>()
|
||||||
|
.ok_or_else(|| Error::key_not_found(format!("{} not found", type_name::<M>())))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Trait for elements offering named metadata
|
||||||
|
pub trait HasNamedMetadata {
|
||||||
|
/// A map, storing all metadata
|
||||||
|
fn named_metadata_map(&self) -> &NamedSerdeAnyMap;
|
||||||
|
/// A map, storing all metadata (mutable)
|
||||||
|
fn named_metadata_map_mut(&mut self) -> &mut NamedSerdeAnyMap;
|
||||||
|
|
||||||
|
/// Add a metadata to the metadata map
|
||||||
|
#[inline]
|
||||||
|
fn add_named_metadata<M>(&mut self, name: &str, meta: M)
|
||||||
|
where
|
||||||
|
M: SerdeAny,
|
||||||
|
{
|
||||||
|
self.named_metadata_map_mut().insert(name, meta);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Add a metadata to the metadata map
|
||||||
|
#[inline]
|
||||||
|
fn remove_named_metadata<M>(&mut self, name: &str) -> Option<Box<M>>
|
||||||
|
where
|
||||||
|
M: SerdeAny,
|
||||||
|
{
|
||||||
|
self.named_metadata_map_mut().remove::<M>(name)
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Gets metadata, or inserts it using the given construction function `default`
|
||||||
|
fn named_metadata_or_insert_with<M>(
|
||||||
|
&mut self,
|
||||||
|
name: &str,
|
||||||
|
default: impl FnOnce() -> M,
|
||||||
|
) -> &mut M
|
||||||
|
where
|
||||||
|
M: SerdeAny,
|
||||||
|
{
|
||||||
|
self.named_metadata_map_mut()
|
||||||
|
.get_or_insert_with::<M>(name, default)
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Check for a metadata
|
||||||
|
///
|
||||||
|
/// # Note
|
||||||
|
/// You likely want to use [`Self::named_metadata_or_insert_with`] for performance reasons.
|
||||||
|
#[inline]
|
||||||
|
fn has_named_metadata<M>(&self, name: &str) -> bool
|
||||||
|
where
|
||||||
|
M: SerdeAny,
|
||||||
|
{
|
||||||
|
self.named_metadata_map().contains::<M>(name)
|
||||||
|
}
|
||||||
|
|
||||||
|
/// To get named metadata
|
||||||
|
#[inline]
|
||||||
|
fn named_metadata<M>(&self, name: &str) -> Result<&M, Error>
|
||||||
|
where
|
||||||
|
M: SerdeAny,
|
||||||
|
{
|
||||||
|
self.named_metadata_map()
|
||||||
|
.get::<M>(name)
|
||||||
|
.ok_or_else(|| Error::key_not_found(format!("{} not found", type_name::<M>())))
|
||||||
|
}
|
||||||
|
|
||||||
|
/// To get mutable named metadata
|
||||||
|
#[inline]
|
||||||
|
fn named_metadata_mut<M>(&mut self, name: &str) -> Result<&mut M, Error>
|
||||||
|
where
|
||||||
|
M: SerdeAny,
|
||||||
|
{
|
||||||
|
self.named_metadata_map_mut()
|
||||||
|
.get_mut::<M>(name)
|
||||||
|
.ok_or_else(|| Error::key_not_found(format!("{} not found", type_name::<M>())))
|
||||||
|
}
|
||||||
|
}
|
@ -24,8 +24,7 @@ use super::{
|
|||||||
use crate::{
|
use crate::{
|
||||||
corpus::{Corpus, CorpusId, InMemoryCorpus, Testcase},
|
corpus::{Corpus, CorpusId, InMemoryCorpus, Testcase},
|
||||||
inputs::{Input, UsesInput},
|
inputs::{Input, UsesInput},
|
||||||
state::HasMetadata,
|
Error, HasMetadata,
|
||||||
Error,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/// The [`Testcase`] metadata that'll be stored to disk
|
/// The [`Testcase`] metadata that'll be stored to disk
|
||||||
|
@ -19,8 +19,8 @@ use crate::{
|
|||||||
monitors::{AggregatorOps, UserStats, UserStatsValue},
|
monitors::{AggregatorOps, UserStats, UserStatsValue},
|
||||||
observers::{MapObserver, ObserversTuple},
|
observers::{MapObserver, ObserversTuple},
|
||||||
schedulers::{LenTimeMulTestcaseScore, RemovableScheduler, Scheduler, TestcaseScore},
|
schedulers::{LenTimeMulTestcaseScore, RemovableScheduler, Scheduler, TestcaseScore},
|
||||||
state::{HasCorpus, HasExecutions, HasMetadata, UsesState},
|
state::{HasCorpus, HasExecutions, UsesState},
|
||||||
Error, HasScheduler,
|
Error, HasMetadata, HasScheduler,
|
||||||
};
|
};
|
||||||
|
|
||||||
/// `CorpusMinimizers` minimize corpora according to internal logic. See various implementations for
|
/// `CorpusMinimizers` minimize corpora according to internal logic. See various implementations for
|
||||||
|
@ -16,8 +16,7 @@ use super::Corpus;
|
|||||||
use crate::{
|
use crate::{
|
||||||
corpus::CorpusId,
|
corpus::CorpusId,
|
||||||
inputs::{Input, UsesInput},
|
inputs::{Input, UsesInput},
|
||||||
state::HasMetadata,
|
Error, HasMetadata,
|
||||||
Error,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/// Shorthand to receive a [`Ref`] or [`RefMut`] to a stored [`Testcase`], by [`CorpusId`].
|
/// Shorthand to receive a [`Ref`] or [`RefMut`] to a stored [`Testcase`], by [`CorpusId`].
|
||||||
|
@ -38,8 +38,8 @@ use crate::{
|
|||||||
fuzzer::{EvaluatorObservers, ExecutionProcessor},
|
fuzzer::{EvaluatorObservers, ExecutionProcessor},
|
||||||
inputs::{Input, UsesInput},
|
inputs::{Input, UsesInput},
|
||||||
observers::ObserversTuple,
|
observers::ObserversTuple,
|
||||||
state::{HasExecutions, HasLastReportTime, HasMetadata, UsesState},
|
state::{HasExecutions, HasLastReportTime, UsesState},
|
||||||
Error,
|
Error, HasMetadata,
|
||||||
};
|
};
|
||||||
|
|
||||||
const _LLMP_TAG_TO_MAIN: Tag = Tag(0x3453453);
|
const _LLMP_TAG_TO_MAIN: Tag = Tag(0x3453453);
|
||||||
|
@ -57,8 +57,8 @@ use crate::{
|
|||||||
inputs::{Input, InputConverter, UsesInput},
|
inputs::{Input, InputConverter, UsesInput},
|
||||||
monitors::Monitor,
|
monitors::Monitor,
|
||||||
observers::ObserversTuple,
|
observers::ObserversTuple,
|
||||||
state::{HasExecutions, HasLastReportTime, HasMetadata, State, UsesState},
|
state::{HasExecutions, HasLastReportTime, State, UsesState},
|
||||||
Error,
|
Error, HasMetadata,
|
||||||
};
|
};
|
||||||
|
|
||||||
/// Forward this to the client
|
/// Forward this to the client
|
||||||
|
@ -46,8 +46,8 @@ use crate::{
|
|||||||
inputs::Input,
|
inputs::Input,
|
||||||
monitors::UserStats,
|
monitors::UserStats,
|
||||||
observers::ObserversTuple,
|
observers::ObserversTuple,
|
||||||
state::{HasExecutions, HasLastReportTime, HasMetadata, State},
|
state::{HasExecutions, HasLastReportTime, State},
|
||||||
Error,
|
Error, HasMetadata,
|
||||||
};
|
};
|
||||||
#[cfg(feature = "scalability_introspection")]
|
#[cfg(feature = "scalability_introspection")]
|
||||||
use crate::{
|
use crate::{
|
||||||
|
@ -32,8 +32,8 @@ use crate::{
|
|||||||
},
|
},
|
||||||
inputs::UsesInput,
|
inputs::UsesInput,
|
||||||
monitors::Monitor,
|
monitors::Monitor,
|
||||||
state::{HasExecutions, HasLastReportTime, HasMetadata, State, UsesState},
|
state::{HasExecutions, HasLastReportTime, State, UsesState},
|
||||||
Error,
|
Error, HasMetadata,
|
||||||
};
|
};
|
||||||
#[cfg(feature = "std")]
|
#[cfg(feature = "std")]
|
||||||
use crate::{
|
use crate::{
|
||||||
|
@ -48,8 +48,8 @@ use crate::{
|
|||||||
fuzzer::{EvaluatorObservers, ExecutionProcessor},
|
fuzzer::{EvaluatorObservers, ExecutionProcessor},
|
||||||
inputs::{Input, UsesInput},
|
inputs::{Input, UsesInput},
|
||||||
monitors::Monitor,
|
monitors::Monitor,
|
||||||
state::{HasExecutions, HasLastReportTime, HasMetadata, State, UsesState},
|
state::{HasExecutions, HasLastReportTime, State, UsesState},
|
||||||
Error,
|
Error, HasMetadata,
|
||||||
};
|
};
|
||||||
|
|
||||||
/// Tries to create (synchronously) a [`TcpListener`] that is `nonblocking` (for later use in tokio).
|
/// Tries to create (synchronously) a [`TcpListener`] that is `nonblocking` (for later use in tokio).
|
||||||
|
@ -32,8 +32,8 @@ use crate::{
|
|||||||
fuzzer::HasObjective,
|
fuzzer::HasObjective,
|
||||||
inputs::UsesInput,
|
inputs::UsesInput,
|
||||||
observers::{ObserversTuple, UsesObservers},
|
observers::{ObserversTuple, UsesObservers},
|
||||||
state::{HasCorpus, HasExecutions, HasMetadata, HasSolutions, State, UsesState},
|
state::{HasCorpus, HasExecutions, HasSolutions, State, UsesState},
|
||||||
Error,
|
Error, HasMetadata,
|
||||||
};
|
};
|
||||||
|
|
||||||
/// The inner structure of `InProcessExecutor`.
|
/// The inner structure of `InProcessExecutor`.
|
||||||
|
@ -15,8 +15,8 @@ use crate::{
|
|||||||
feedbacks::Feedback,
|
feedbacks::Feedback,
|
||||||
inputs::UsesInput,
|
inputs::UsesInput,
|
||||||
observers::{concolic::ConcolicObserver, ObserversTuple},
|
observers::{concolic::ConcolicObserver, ObserversTuple},
|
||||||
state::{HasMetadata, State},
|
state::State,
|
||||||
Error,
|
Error, HasMetadata,
|
||||||
};
|
};
|
||||||
|
|
||||||
/// The concolic feedback. It is used to attach concolic tracing metadata to the testcase.
|
/// The concolic feedback. It is used to attach concolic tracing metadata to the testcase.
|
||||||
|
@ -16,8 +16,8 @@ use crate::{
|
|||||||
feedbacks::Feedback,
|
feedbacks::Feedback,
|
||||||
inputs::Input,
|
inputs::Input,
|
||||||
observers::{Observer, ObserversTuple},
|
observers::{Observer, ObserversTuple},
|
||||||
state::{HasMetadata, State},
|
state::State,
|
||||||
Error,
|
Error, HasMetadata,
|
||||||
};
|
};
|
||||||
|
|
||||||
/// The result of a differential test between two observers.
|
/// The result of a differential test between two observers.
|
||||||
|
@ -10,7 +10,8 @@ use crate::{
|
|||||||
executors::ExitKind,
|
executors::ExitKind,
|
||||||
feedbacks::Feedback,
|
feedbacks::Feedback,
|
||||||
observers::{ListObserver, ObserversTuple},
|
observers::{ListObserver, ObserversTuple},
|
||||||
state::{HasNamedMetadata, State},
|
state::State,
|
||||||
|
HasNamedMetadata,
|
||||||
};
|
};
|
||||||
|
|
||||||
/// The metadata to remember past observed value
|
/// The metadata to remember past observed value
|
||||||
|
@ -24,8 +24,8 @@ use crate::{
|
|||||||
inputs::UsesInput,
|
inputs::UsesInput,
|
||||||
monitors::{AggregatorOps, UserStats, UserStatsValue},
|
monitors::{AggregatorOps, UserStats, UserStatsValue},
|
||||||
observers::{MapObserver, Observer, ObserversTuple, UsesObserver},
|
observers::{MapObserver, Observer, ObserversTuple, UsesObserver},
|
||||||
state::{HasMetadata, HasNamedMetadata, State},
|
state::State,
|
||||||
Error,
|
Error, HasMetadata, HasNamedMetadata,
|
||||||
};
|
};
|
||||||
|
|
||||||
/// A [`MapFeedback`] that implements the AFL algorithm using an [`OrReducer`] combining the bits for the history map and the bit from ``HitcountsMapObserver``.
|
/// A [`MapFeedback`] that implements the AFL algorithm using an [`OrReducer`] combining the bits for the history map and the bit from ``HitcountsMapObserver``.
|
||||||
|
@ -15,8 +15,8 @@ use crate::{
|
|||||||
generators::NautilusContext,
|
generators::NautilusContext,
|
||||||
inputs::NautilusInput,
|
inputs::NautilusInput,
|
||||||
observers::ObserversTuple,
|
observers::ObserversTuple,
|
||||||
state::{HasCorpus, HasMetadata, State},
|
state::{HasCorpus, State},
|
||||||
Error,
|
Error, HasMetadata,
|
||||||
};
|
};
|
||||||
|
|
||||||
/// Metadata for Nautilus grammar mutator chunks
|
/// Metadata for Nautilus grammar mutator chunks
|
||||||
|
@ -13,8 +13,8 @@ use crate::{
|
|||||||
feedbacks::{Feedback, HasObserverName},
|
feedbacks::{Feedback, HasObserverName},
|
||||||
inputs::UsesInput,
|
inputs::UsesInput,
|
||||||
observers::{ObserverWithHashField, ObserversTuple},
|
observers::{ObserverWithHashField, ObserversTuple},
|
||||||
state::{HasNamedMetadata, State},
|
state::State,
|
||||||
Error,
|
Error, HasNamedMetadata,
|
||||||
};
|
};
|
||||||
|
|
||||||
/// The prefix of the metadata names
|
/// The prefix of the metadata names
|
||||||
|
@ -5,11 +5,8 @@ use libafl_bolts::{impl_serdeany, Error, Named};
|
|||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
events::EventFirer,
|
events::EventFirer, executors::ExitKind, feedbacks::Feedback, observers::ObserversTuple,
|
||||||
executors::ExitKind,
|
state::State, HasMetadata,
|
||||||
feedbacks::Feedback,
|
|
||||||
observers::ObserversTuple,
|
|
||||||
state::{HasMetadata, State},
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/// Constant name of the [`TransferringMetadata`].
|
/// Constant name of the [`TransferringMetadata`].
|
||||||
|
@ -17,11 +17,8 @@ use crate::{
|
|||||||
schedulers::Scheduler,
|
schedulers::Scheduler,
|
||||||
stages::{HasCurrentStage, StagesTuple},
|
stages::{HasCurrentStage, StagesTuple},
|
||||||
start_timer,
|
start_timer,
|
||||||
state::{
|
state::{HasCorpus, HasExecutions, HasImported, HasLastReportTime, HasSolutions, UsesState},
|
||||||
HasCorpus, HasExecutions, HasImported, HasLastReportTime, HasMetadata, HasSolutions,
|
Error, HasMetadata,
|
||||||
UsesState,
|
|
||||||
},
|
|
||||||
Error,
|
|
||||||
};
|
};
|
||||||
#[cfg(feature = "introspection")]
|
#[cfg(feature = "introspection")]
|
||||||
use crate::{monitors::PerfFeature, state::HasClientPerfMonitor};
|
use crate::{monitors::PerfFeature, state::HasClientPerfMonitor};
|
||||||
@ -762,8 +759,8 @@ pub mod test {
|
|||||||
corpus::CorpusId,
|
corpus::CorpusId,
|
||||||
events::ProgressReporter,
|
events::ProgressReporter,
|
||||||
stages::{HasCurrentStage, StagesTuple},
|
stages::{HasCurrentStage, StagesTuple},
|
||||||
state::{HasExecutions, HasLastReportTime, HasMetadata, State, UsesState},
|
state::{HasExecutions, HasLastReportTime, State, UsesState},
|
||||||
Fuzzer,
|
Fuzzer, HasMetadata,
|
||||||
};
|
};
|
||||||
|
|
||||||
#[derive(Clone, Debug)]
|
#[derive(Clone, Debug)]
|
||||||
|
@ -9,8 +9,8 @@ use crate::{
|
|||||||
corpus::Testcase,
|
corpus::Testcase,
|
||||||
inputs::BytesInput,
|
inputs::BytesInput,
|
||||||
stages::mutational::{MutatedTransform, MutatedTransformPost},
|
stages::mutational::{MutatedTransform, MutatedTransformPost},
|
||||||
state::{HasCorpus, HasMetadata},
|
state::HasCorpus,
|
||||||
Error,
|
Error, HasMetadata,
|
||||||
};
|
};
|
||||||
|
|
||||||
/// An item of the generalized input
|
/// An item of the generalized input
|
||||||
|
@ -98,6 +98,8 @@ pub mod bolts {}
|
|||||||
#[doc(hidden)]
|
#[doc(hidden)]
|
||||||
pub use libafl_derive::*;
|
pub use libafl_derive::*;
|
||||||
|
|
||||||
|
pub mod common;
|
||||||
|
pub use common::*;
|
||||||
pub mod corpus;
|
pub mod corpus;
|
||||||
pub mod events;
|
pub mod events;
|
||||||
pub mod executors;
|
pub mod executors;
|
||||||
|
@ -13,8 +13,8 @@ use crate::{
|
|||||||
inputs::{GramatronInput, Terminal},
|
inputs::{GramatronInput, Terminal},
|
||||||
mutators::{MutationResult, Mutator},
|
mutators::{MutationResult, Mutator},
|
||||||
random_corpus_id,
|
random_corpus_id,
|
||||||
state::{HasCorpus, HasMetadata, HasRand},
|
state::{HasCorpus, HasRand},
|
||||||
Error,
|
Error, HasMetadata,
|
||||||
};
|
};
|
||||||
|
|
||||||
const RECUR_THRESHOLD: u64 = 5;
|
const RECUR_THRESHOLD: u64 = 5;
|
||||||
|
@ -11,8 +11,8 @@ use crate::{
|
|||||||
inputs::{GeneralizedInputMetadata, GeneralizedItem},
|
inputs::{GeneralizedInputMetadata, GeneralizedItem},
|
||||||
mutators::{token_mutations::Tokens, MutationResult, Mutator},
|
mutators::{token_mutations::Tokens, MutationResult, Mutator},
|
||||||
random_corpus_id,
|
random_corpus_id,
|
||||||
state::{HasCorpus, HasMetadata, HasRand},
|
state::{HasCorpus, HasRand},
|
||||||
Error,
|
Error, HasMetadata,
|
||||||
};
|
};
|
||||||
|
|
||||||
const RECURSIVE_REPLACEMENT_DEPTH: [usize; 6] = [2, 4, 8, 16, 32, 64];
|
const RECURSIVE_REPLACEMENT_DEPTH: [usize; 6] = [2, 4, 8, 16, 32, 64];
|
||||||
|
@ -18,8 +18,8 @@ use super::MutationId;
|
|||||||
use crate::{
|
use crate::{
|
||||||
corpus::{Corpus, CorpusId},
|
corpus::{Corpus, CorpusId},
|
||||||
mutators::{ComposedByMutations, MutationResult, Mutator, MutatorsTuple, ScheduledMutator},
|
mutators::{ComposedByMutations, MutationResult, Mutator, MutatorsTuple, ScheduledMutator},
|
||||||
state::{HasCorpus, HasMetadata, HasRand, HasSolutions},
|
state::{HasCorpus, HasRand, HasSolutions},
|
||||||
Error,
|
Error, HasMetadata,
|
||||||
};
|
};
|
||||||
|
|
||||||
/// A Struct for managing MOpt-mutator parameters.
|
/// A Struct for managing MOpt-mutator parameters.
|
||||||
|
@ -1306,11 +1306,8 @@ mod tests {
|
|||||||
|
|
||||||
use super::*;
|
use super::*;
|
||||||
use crate::{
|
use crate::{
|
||||||
corpus::InMemoryCorpus,
|
corpus::InMemoryCorpus, feedbacks::ConstFeedback, inputs::BytesInput,
|
||||||
feedbacks::ConstFeedback,
|
mutators::MutatorsTuple, state::StdState, HasMetadata,
|
||||||
inputs::BytesInput,
|
|
||||||
mutators::MutatorsTuple,
|
|
||||||
state::{HasMetadata, StdState},
|
|
||||||
};
|
};
|
||||||
|
|
||||||
type TestMutatorsTupleType = tuple_list_type!(
|
type TestMutatorsTupleType = tuple_list_type!(
|
||||||
|
@ -14,8 +14,8 @@ use crate::{
|
|||||||
generators::nautilus::NautilusContext,
|
generators::nautilus::NautilusContext,
|
||||||
inputs::nautilus::NautilusInput,
|
inputs::nautilus::NautilusInput,
|
||||||
mutators::{MutationResult, Mutator},
|
mutators::{MutationResult, Mutator},
|
||||||
state::{HasCorpus, HasMetadata},
|
state::HasCorpus,
|
||||||
Error,
|
Error, HasMetadata,
|
||||||
};
|
};
|
||||||
|
|
||||||
/// The randomic mutator for `Nautilus` grammar.
|
/// The randomic mutator for `Nautilus` grammar.
|
||||||
|
@ -28,8 +28,8 @@ use crate::{
|
|||||||
token_mutations::{TokenInsert, TokenReplace},
|
token_mutations::{TokenInsert, TokenReplace},
|
||||||
MutationResult, Mutator, MutatorsTuple,
|
MutationResult, Mutator, MutatorsTuple,
|
||||||
},
|
},
|
||||||
state::{HasCorpus, HasMetadata, HasRand},
|
state::{HasCorpus, HasRand},
|
||||||
Error,
|
Error, HasMetadata,
|
||||||
};
|
};
|
||||||
|
|
||||||
/// The metadata placed in a [`crate::corpus::Testcase`] by a [`LoggerScheduledMutator`].
|
/// The metadata placed in a [`crate::corpus::Testcase`] by a [`LoggerScheduledMutator`].
|
||||||
|
@ -16,7 +16,8 @@ use crate::{
|
|||||||
mutational::{MutatedTransform, MutatedTransformPost},
|
mutational::{MutatedTransform, MutatedTransformPost},
|
||||||
StringIdentificationMetadata,
|
StringIdentificationMetadata,
|
||||||
},
|
},
|
||||||
state::{HasCorpus, HasMaxSize, HasMetadata, HasRand},
|
state::{HasCorpus, HasMaxSize, HasRand},
|
||||||
|
HasMetadata,
|
||||||
};
|
};
|
||||||
|
|
||||||
/// Unicode category data, as used by string analysis and mutators.
|
/// Unicode category data, as used by string analysis and mutators.
|
||||||
|
@ -30,8 +30,8 @@ use crate::{
|
|||||||
},
|
},
|
||||||
observers::cmp::{AFLppCmpValuesMetadata, CmpValues, CmpValuesMetadata},
|
observers::cmp::{AFLppCmpValuesMetadata, CmpValues, CmpValuesMetadata},
|
||||||
stages::TaintMetadata,
|
stages::TaintMetadata,
|
||||||
state::{HasCorpus, HasMaxSize, HasMetadata, HasRand},
|
state::{HasCorpus, HasMaxSize, HasRand},
|
||||||
Error,
|
Error, HasMetadata,
|
||||||
};
|
};
|
||||||
|
|
||||||
/// A state metadata holding a list of tokens
|
/// A state metadata holding a list of tokens
|
||||||
|
@ -18,8 +18,8 @@ use crate::{
|
|||||||
mutators::{
|
mutators::{
|
||||||
ComposedByMutations, MutationId, MutationResult, Mutator, MutatorsTuple, ScheduledMutator,
|
ComposedByMutations, MutationId, MutationResult, Mutator, MutatorsTuple, ScheduledMutator,
|
||||||
},
|
},
|
||||||
state::{HasMetadata, HasRand},
|
state::HasRand,
|
||||||
Error,
|
Error, HasMetadata,
|
||||||
};
|
};
|
||||||
|
|
||||||
/// Metadata in the state, that controls the behavior of the [`TuneableScheduledMutator`] at runtime
|
/// Metadata in the state, that controls the behavior of the [`TuneableScheduledMutator`] at runtime
|
||||||
|
@ -11,9 +11,7 @@ use hashbrown::HashMap;
|
|||||||
use libafl_bolts::{ownedref::OwnedRefMut, serdeany::SerdeAny, AsMutSlice, AsSlice, Named};
|
use libafl_bolts::{ownedref::OwnedRefMut, serdeany::SerdeAny, AsMutSlice, AsSlice, Named};
|
||||||
use serde::{de::DeserializeOwned, Deserialize, Serialize};
|
use serde::{de::DeserializeOwned, Deserialize, Serialize};
|
||||||
|
|
||||||
use crate::{
|
use crate::{executors::ExitKind, inputs::UsesInput, observers::Observer, Error, HasMetadata};
|
||||||
executors::ExitKind, inputs::UsesInput, observers::Observer, state::HasMetadata, Error,
|
|
||||||
};
|
|
||||||
|
|
||||||
/// Generic metadata trait for use in a `CmpObserver`, which adds comparisons from a `CmpObserver`
|
/// Generic metadata trait for use in a `CmpObserver`, which adds comparisons from a `CmpObserver`
|
||||||
/// primarily intended for use with `AFLppCmpValuesMetadata` or `CmpValuesMetadata`
|
/// primarily intended for use with `AFLppCmpValuesMetadata` or `CmpValuesMetadata`
|
||||||
|
@ -16,8 +16,8 @@ use crate::{
|
|||||||
minimizer::{IsFavoredMetadata, MinimizerScheduler, DEFAULT_SKIP_NON_FAVORED_PROB},
|
minimizer::{IsFavoredMetadata, MinimizerScheduler, DEFAULT_SKIP_NON_FAVORED_PROB},
|
||||||
LenTimeMulTestcaseScore, Scheduler,
|
LenTimeMulTestcaseScore, Scheduler,
|
||||||
},
|
},
|
||||||
state::{HasCorpus, HasMetadata, HasRand, UsesState},
|
state::{HasCorpus, HasRand, UsesState},
|
||||||
Error,
|
Error, HasMetadata,
|
||||||
};
|
};
|
||||||
|
|
||||||
/// A testcase metadata holding a list of indexes of a map
|
/// A testcase metadata holding a list of indexes of a map
|
||||||
|
@ -14,8 +14,8 @@ use crate::{
|
|||||||
inputs::UsesInput,
|
inputs::UsesInput,
|
||||||
observers::ObserversTuple,
|
observers::ObserversTuple,
|
||||||
schedulers::{LenTimeMulTestcaseScore, RemovableScheduler, Scheduler, TestcaseScore},
|
schedulers::{LenTimeMulTestcaseScore, RemovableScheduler, Scheduler, TestcaseScore},
|
||||||
state::{HasCorpus, HasMetadata, HasRand, UsesState},
|
state::{HasCorpus, HasRand, UsesState},
|
||||||
Error,
|
Error, HasMetadata,
|
||||||
};
|
};
|
||||||
|
|
||||||
/// Default probability to skip the non-favored values
|
/// Default probability to skip the non-favored values
|
||||||
|
@ -35,8 +35,8 @@ use crate::{
|
|||||||
inputs::UsesInput,
|
inputs::UsesInput,
|
||||||
observers::{MapObserver, ObserversTuple},
|
observers::{MapObserver, ObserversTuple},
|
||||||
random_corpus_id,
|
random_corpus_id,
|
||||||
state::{HasCorpus, HasMetadata, HasRand, State, UsesState},
|
state::{HasCorpus, HasRand, State, UsesState},
|
||||||
Error,
|
Error, HasMetadata,
|
||||||
};
|
};
|
||||||
|
|
||||||
/// The scheduler also implements `on_remove` and `on_replace` if it implements this stage.
|
/// The scheduler also implements `on_remove` and `on_replace` if it implements this stage.
|
||||||
|
@ -13,8 +13,8 @@ use crate::{
|
|||||||
inputs::UsesInput,
|
inputs::UsesInput,
|
||||||
observers::{MapObserver, ObserversTuple},
|
observers::{MapObserver, ObserversTuple},
|
||||||
schedulers::{HasAFLSchedulerMetadata, RemovableScheduler, Scheduler},
|
schedulers::{HasAFLSchedulerMetadata, RemovableScheduler, Scheduler},
|
||||||
state::{HasCorpus, HasMetadata, State, UsesState},
|
state::{HasCorpus, State, UsesState},
|
||||||
Error,
|
Error, HasMetadata,
|
||||||
};
|
};
|
||||||
|
|
||||||
/// The n fuzz size
|
/// The n fuzz size
|
||||||
|
@ -12,8 +12,8 @@ use crate::{
|
|||||||
corpus::{Corpus, CorpusId, HasTestcase, Testcase},
|
corpus::{Corpus, CorpusId, HasTestcase, Testcase},
|
||||||
inputs::UsesInput,
|
inputs::UsesInput,
|
||||||
schedulers::{RemovableScheduler, Scheduler, TestcaseScore},
|
schedulers::{RemovableScheduler, Scheduler, TestcaseScore},
|
||||||
state::{HasCorpus, HasMetadata, HasRand, State, UsesState},
|
state::{HasCorpus, HasRand, State, UsesState},
|
||||||
Error,
|
Error, HasMetadata,
|
||||||
};
|
};
|
||||||
|
|
||||||
/// Conduct reservoir sampling (probabilistic sampling) over all corpus elements.
|
/// Conduct reservoir sampling (probabilistic sampling) over all corpus elements.
|
||||||
@ -202,8 +202,8 @@ mod tests {
|
|||||||
feedbacks::ConstFeedback,
|
feedbacks::ConstFeedback,
|
||||||
inputs::{bytes::BytesInput, Input, UsesInput},
|
inputs::{bytes::BytesInput, Input, UsesInput},
|
||||||
schedulers::{ProbabilitySamplingScheduler, Scheduler, TestcaseScore},
|
schedulers::{ProbabilitySamplingScheduler, Scheduler, TestcaseScore},
|
||||||
state::{HasCorpus, HasMetadata, StdState},
|
state::{HasCorpus, StdState},
|
||||||
Error,
|
Error, HasMetadata,
|
||||||
};
|
};
|
||||||
|
|
||||||
const FACTOR: f64 = 1337.0;
|
const FACTOR: f64 = 1337.0;
|
||||||
|
@ -11,8 +11,8 @@ use crate::{
|
|||||||
minimizer::{IsFavoredMetadata, TopRatedsMetadata},
|
minimizer::{IsFavoredMetadata, TopRatedsMetadata},
|
||||||
powersched::{PowerSchedule, SchedulerMetadata},
|
powersched::{PowerSchedule, SchedulerMetadata},
|
||||||
},
|
},
|
||||||
state::{HasCorpus, HasMetadata},
|
state::HasCorpus,
|
||||||
Error,
|
Error, HasMetadata,
|
||||||
};
|
};
|
||||||
|
|
||||||
/// Compute the favor factor of a [`Testcase`]. Higher is better.
|
/// Compute the favor factor of a [`Testcase`]. Higher is better.
|
||||||
|
@ -12,8 +12,8 @@ use super::RemovableScheduler;
|
|||||||
use crate::{
|
use crate::{
|
||||||
corpus::{Corpus, CorpusId, HasTestcase},
|
corpus::{Corpus, CorpusId, HasTestcase},
|
||||||
schedulers::Scheduler,
|
schedulers::Scheduler,
|
||||||
state::{HasCorpus, HasMetadata, State, UsesState},
|
state::{HasCorpus, State, UsesState},
|
||||||
Error,
|
Error, HasMetadata,
|
||||||
};
|
};
|
||||||
|
|
||||||
#[derive(Default, Clone, Copy, Eq, PartialEq, Debug, Serialize, Deserialize)]
|
#[derive(Default, Clone, Copy, Eq, PartialEq, Debug, Serialize, Deserialize)]
|
||||||
|
@ -18,8 +18,8 @@ use crate::{
|
|||||||
testcase_score::{CorpusWeightTestcaseScore, TestcaseScore},
|
testcase_score::{CorpusWeightTestcaseScore, TestcaseScore},
|
||||||
HasAFLSchedulerMetadata, RemovableScheduler, Scheduler,
|
HasAFLSchedulerMetadata, RemovableScheduler, Scheduler,
|
||||||
},
|
},
|
||||||
state::{HasCorpus, HasMetadata, HasRand, State, UsesState},
|
state::{HasCorpus, HasRand, State, UsesState},
|
||||||
Error,
|
Error, HasMetadata,
|
||||||
};
|
};
|
||||||
|
|
||||||
/// The Metadata for `WeightedScheduler`
|
/// The Metadata for `WeightedScheduler`
|
||||||
|
@ -21,11 +21,8 @@ use crate::{
|
|||||||
observers::{MapObserver, ObserversTuple, UsesObserver},
|
observers::{MapObserver, ObserversTuple, UsesObserver},
|
||||||
schedulers::powersched::SchedulerMetadata,
|
schedulers::powersched::SchedulerMetadata,
|
||||||
stages::{ExecutionCountRestartHelper, Stage},
|
stages::{ExecutionCountRestartHelper, Stage},
|
||||||
state::{
|
state::{HasCorpus, HasCurrentTestcase, HasExecutions, State, UsesState},
|
||||||
HasCorpus, HasCurrentTestcase, HasExecutions, HasMetadata, HasNamedMetadata, State,
|
Error, HasMetadata, HasNamedMetadata,
|
||||||
UsesState,
|
|
||||||
},
|
|
||||||
Error,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/// The metadata to keep unstable entries
|
/// The metadata to keep unstable entries
|
||||||
|
@ -16,8 +16,8 @@ use crate::{
|
|||||||
mutators::mutations::buffer_copy,
|
mutators::mutations::buffer_copy,
|
||||||
observers::{MapObserver, ObserversTuple},
|
observers::{MapObserver, ObserversTuple},
|
||||||
stages::{RetryRestartHelper, Stage},
|
stages::{RetryRestartHelper, Stage},
|
||||||
state::{HasCorpus, HasCurrentTestcase, HasMetadata, HasNamedMetadata, HasRand, UsesState},
|
state::{HasCorpus, HasCurrentTestcase, HasRand, UsesState},
|
||||||
Error,
|
Error, HasMetadata, HasNamedMetadata,
|
||||||
};
|
};
|
||||||
|
|
||||||
// Bigger range is better
|
// Bigger range is better
|
||||||
|
@ -18,10 +18,8 @@ use crate::{
|
|||||||
executors::{Executor, HasObservers},
|
executors::{Executor, HasObservers},
|
||||||
observers::concolic::ConcolicObserver,
|
observers::concolic::ConcolicObserver,
|
||||||
stages::{RetryRestartHelper, Stage, TracingStage},
|
stages::{RetryRestartHelper, Stage, TracingStage},
|
||||||
state::{
|
state::{HasCorpus, HasCurrentTestcase, HasExecutions, UsesState},
|
||||||
HasCorpus, HasCurrentTestcase, HasExecutions, HasMetadata, HasNamedMetadata, UsesState,
|
Error, HasMetadata, HasNamedMetadata,
|
||||||
},
|
|
||||||
Error,
|
|
||||||
};
|
};
|
||||||
#[cfg(feature = "concolic_mutation")]
|
#[cfg(feature = "concolic_mutation")]
|
||||||
use crate::{
|
use crate::{
|
||||||
|
@ -11,8 +11,8 @@ use crate::{
|
|||||||
corpus::{Corpus, CorpusId},
|
corpus::{Corpus, CorpusId},
|
||||||
inputs::UsesInput,
|
inputs::UsesInput,
|
||||||
stages::Stage,
|
stages::Stage,
|
||||||
state::{HasCorpus, HasMetadata, HasRand, HasSolutions, UsesState},
|
state::{HasCorpus, HasRand, HasSolutions, UsesState},
|
||||||
Error,
|
Error, HasMetadata,
|
||||||
};
|
};
|
||||||
|
|
||||||
/// Metadata used to store information about disk dump indexes for names
|
/// Metadata used to store information about disk dump indexes for names
|
||||||
|
@ -17,8 +17,8 @@ use crate::{
|
|||||||
observers::{MapObserver, ObserversTuple},
|
observers::{MapObserver, ObserversTuple},
|
||||||
stages::{RetryRestartHelper, Stage},
|
stages::{RetryRestartHelper, Stage},
|
||||||
start_timer,
|
start_timer,
|
||||||
state::{HasCorpus, HasExecutions, HasMetadata, HasNamedMetadata, UsesState},
|
state::{HasCorpus, HasExecutions, UsesState},
|
||||||
Error,
|
Error, HasMetadata, HasNamedMetadata,
|
||||||
};
|
};
|
||||||
#[cfg(feature = "introspection")]
|
#[cfg(feature = "introspection")]
|
||||||
use crate::{monitors::PerfFeature, state::HasClientPerfMonitor};
|
use crate::{monitors::PerfFeature, state::HasClientPerfMonitor};
|
||||||
|
@ -46,11 +46,9 @@ use crate::{
|
|||||||
observers::ObserversTuple,
|
observers::ObserversTuple,
|
||||||
schedulers::Scheduler,
|
schedulers::Scheduler,
|
||||||
stages::push::PushStage,
|
stages::push::PushStage,
|
||||||
state::{
|
state::{HasCorpus, HasExecutions, HasLastReportTime, HasRand, State, UsesState},
|
||||||
HasCorpus, HasExecutions, HasLastReportTime, HasMetadata, HasNamedMetadata, HasRand, State,
|
Error, EvaluatorObservers, ExecutesInput, ExecutionProcessor, HasMetadata, HasNamedMetadata,
|
||||||
UsesState,
|
HasScheduler,
|
||||||
},
|
|
||||||
Error, EvaluatorObservers, ExecutesInput, ExecutionProcessor, HasScheduler,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/// Mutational stage is the normal fuzzing stage.
|
/// Mutational stage is the normal fuzzing stage.
|
||||||
@ -655,7 +653,8 @@ pub mod test {
|
|||||||
corpus::{Corpus, HasCurrentCorpusIdx, Testcase},
|
corpus::{Corpus, HasCurrentCorpusIdx, Testcase},
|
||||||
inputs::NopInput,
|
inputs::NopInput,
|
||||||
stages::{RetryRestartHelper, Stage},
|
stages::{RetryRestartHelper, Stage},
|
||||||
state::{test::test_std_state, HasCorpus, HasMetadata, State, UsesState},
|
state::{test::test_std_state, HasCorpus, State, UsesState},
|
||||||
|
HasMetadata,
|
||||||
};
|
};
|
||||||
|
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
|
@ -13,11 +13,8 @@ use crate::{
|
|||||||
mutators::{MultiMutator, MutationResult, Mutator},
|
mutators::{MultiMutator, MutationResult, Mutator},
|
||||||
stages::{ExecutionCountRestartHelper, RetryRestartHelper, Stage},
|
stages::{ExecutionCountRestartHelper, RetryRestartHelper, Stage},
|
||||||
start_timer,
|
start_timer,
|
||||||
state::{
|
state::{HasCorpus, HasCurrentTestcase, HasExecutions, HasRand, UsesState},
|
||||||
HasCorpus, HasCurrentTestcase, HasExecutions, HasMetadata, HasNamedMetadata, HasRand,
|
Error, HasMetadata, HasNamedMetadata,
|
||||||
UsesState,
|
|
||||||
},
|
|
||||||
Error,
|
|
||||||
};
|
};
|
||||||
#[cfg(feature = "introspection")]
|
#[cfg(feature = "introspection")]
|
||||||
use crate::{monitors::PerfFeature, state::HasClientPerfMonitor};
|
use crate::{monitors::PerfFeature, state::HasClientPerfMonitor};
|
||||||
|
@ -8,8 +8,8 @@ use crate::{
|
|||||||
mutators::Mutator,
|
mutators::Mutator,
|
||||||
schedulers::{testcase_score::CorpusPowerTestcaseScore, TestcaseScore},
|
schedulers::{testcase_score::CorpusPowerTestcaseScore, TestcaseScore},
|
||||||
stages::{mutational::MutatedTransform, ExecutionCountRestartHelper, MutationalStage, Stage},
|
stages::{mutational::MutatedTransform, ExecutionCountRestartHelper, MutationalStage, Stage},
|
||||||
state::{HasCorpus, HasCurrentTestcase, HasExecutions, HasMetadata, HasRand, UsesState},
|
state::{HasCorpus, HasCurrentTestcase, HasExecutions, HasRand, UsesState},
|
||||||
Error,
|
Error, HasMetadata,
|
||||||
};
|
};
|
||||||
|
|
||||||
/// The mutational stage using power schedules
|
/// The mutational stage using power schedules
|
||||||
|
@ -22,8 +22,8 @@ use crate::{
|
|||||||
inputs::UsesInput,
|
inputs::UsesInput,
|
||||||
observers::ObserversTuple,
|
observers::ObserversTuple,
|
||||||
schedulers::Scheduler,
|
schedulers::Scheduler,
|
||||||
state::{HasCorpus, HasExecutions, HasLastReportTime, HasMetadata, HasRand},
|
state::{HasCorpus, HasExecutions, HasLastReportTime, HasRand},
|
||||||
Error, EvaluatorObservers, ExecutionProcessor, HasScheduler,
|
Error, EvaluatorObservers, ExecutionProcessor, HasMetadata, HasScheduler,
|
||||||
};
|
};
|
||||||
|
|
||||||
/// Send a monitor update all 15 (or more) seconds
|
/// Send a monitor update all 15 (or more) seconds
|
||||||
|
@ -20,8 +20,8 @@ use crate::{
|
|||||||
observers::ObserversTuple,
|
observers::ObserversTuple,
|
||||||
schedulers::Scheduler,
|
schedulers::Scheduler,
|
||||||
start_timer,
|
start_timer,
|
||||||
state::{HasCorpus, HasExecutions, HasLastReportTime, HasMetadata, HasRand},
|
state::{HasCorpus, HasExecutions, HasLastReportTime, HasRand},
|
||||||
Error, EvaluatorObservers, ExecutionProcessor, HasScheduler,
|
Error, EvaluatorObservers, ExecutionProcessor, HasMetadata, HasScheduler,
|
||||||
};
|
};
|
||||||
#[cfg(feature = "introspection")]
|
#[cfg(feature = "introspection")]
|
||||||
use crate::{monitors::PerfFeature, state::HasClientPerfMonitor};
|
use crate::{monitors::PerfFeature, state::HasClientPerfMonitor};
|
||||||
|
@ -13,8 +13,8 @@ use crate::{
|
|||||||
events::EventFirer,
|
events::EventFirer,
|
||||||
schedulers::minimizer::IsFavoredMetadata,
|
schedulers::minimizer::IsFavoredMetadata,
|
||||||
stages::Stage,
|
stages::Stage,
|
||||||
state::{HasCorpus, HasImported, HasMetadata, UsesState},
|
state::{HasCorpus, HasImported, UsesState},
|
||||||
Error,
|
Error, HasMetadata,
|
||||||
};
|
};
|
||||||
#[cfg(feature = "std")]
|
#[cfg(feature = "std")]
|
||||||
use crate::{
|
use crate::{
|
||||||
|
@ -11,7 +11,8 @@ use crate::{
|
|||||||
corpus::HasTestcase,
|
corpus::HasTestcase,
|
||||||
inputs::{BytesInput, HasBytesVec},
|
inputs::{BytesInput, HasBytesVec},
|
||||||
stages::Stage,
|
stages::Stage,
|
||||||
state::{HasCorpus, HasCurrentTestcase, HasMetadata, State, UsesState},
|
state::{HasCorpus, HasCurrentTestcase, State, UsesState},
|
||||||
|
HasMetadata,
|
||||||
};
|
};
|
||||||
|
|
||||||
/// Metadata which stores the list of pre-computed string-like ranges in the input
|
/// Metadata which stores the list of pre-computed string-like ranges in the input
|
||||||
|
@ -19,8 +19,8 @@ use crate::{
|
|||||||
fuzzer::{Evaluator, EvaluatorObservers, ExecutionProcessor},
|
fuzzer::{Evaluator, EvaluatorObservers, ExecutionProcessor},
|
||||||
inputs::{Input, InputConverter, UsesInput},
|
inputs::{Input, InputConverter, UsesInput},
|
||||||
stages::{RetryRestartHelper, Stage},
|
stages::{RetryRestartHelper, Stage},
|
||||||
state::{HasCorpus, HasExecutions, HasMetadata, HasNamedMetadata, HasRand, State, UsesState},
|
state::{HasCorpus, HasExecutions, HasRand, State, UsesState},
|
||||||
Error,
|
Error, HasMetadata, HasNamedMetadata,
|
||||||
};
|
};
|
||||||
|
|
||||||
/// Metadata used to store information about disk sync time
|
/// Metadata used to store information about disk sync time
|
||||||
|
@ -22,10 +22,9 @@ use crate::{
|
|||||||
},
|
},
|
||||||
start_timer,
|
start_timer,
|
||||||
state::{
|
state::{
|
||||||
HasCorpus, HasCurrentTestcase, HasExecutions, HasMaxSize, HasMetadata, HasSolutions, State,
|
HasCorpus, HasCurrentTestcase, HasExecutions, HasMaxSize, HasSolutions, State, UsesState,
|
||||||
UsesState,
|
|
||||||
},
|
},
|
||||||
Error, ExecutesInput, ExecutionProcessor, HasFeedback, HasScheduler,
|
Error, ExecutesInput, ExecutionProcessor, HasFeedback, HasMetadata, HasScheduler,
|
||||||
};
|
};
|
||||||
#[cfg(feature = "introspection")]
|
#[cfg(feature = "introspection")]
|
||||||
use crate::{monitors::PerfFeature, state::HasClientPerfMonitor};
|
use crate::{monitors::PerfFeature, state::HasClientPerfMonitor};
|
||||||
|
@ -10,8 +10,8 @@ use crate::{
|
|||||||
observers::ObserversTuple,
|
observers::ObserversTuple,
|
||||||
stages::{RetryRestartHelper, Stage},
|
stages::{RetryRestartHelper, Stage},
|
||||||
start_timer,
|
start_timer,
|
||||||
state::{HasCorpus, HasCurrentTestcase, HasExecutions, HasNamedMetadata, State, UsesState},
|
state::{HasCorpus, HasCurrentTestcase, HasExecutions, State, UsesState},
|
||||||
Error,
|
Error, HasNamedMetadata,
|
||||||
};
|
};
|
||||||
#[cfg(feature = "introspection")]
|
#[cfg(feature = "introspection")]
|
||||||
use crate::{monitors::PerfFeature, state::HasClientPerfMonitor};
|
use crate::{monitors::PerfFeature, state::HasClientPerfMonitor};
|
||||||
|
@ -14,11 +14,8 @@ use crate::{
|
|||||||
ExecutionCountRestartHelper, MutationalStage, Stage,
|
ExecutionCountRestartHelper, MutationalStage, Stage,
|
||||||
},
|
},
|
||||||
start_timer,
|
start_timer,
|
||||||
state::{
|
state::{HasCorpus, HasCurrentTestcase, HasExecutions, HasRand, UsesState},
|
||||||
HasCorpus, HasCurrentTestcase, HasExecutions, HasMetadata, HasNamedMetadata, HasRand,
|
Error, Evaluator, HasMetadata, HasNamedMetadata,
|
||||||
UsesState,
|
|
||||||
},
|
|
||||||
Error, Evaluator,
|
|
||||||
};
|
};
|
||||||
#[cfg(feature = "introspection")]
|
#[cfg(feature = "introspection")]
|
||||||
use crate::{monitors::PerfFeature, state::HasClientPerfMonitor};
|
use crate::{monitors::PerfFeature, state::HasClientPerfMonitor};
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
//! The fuzzer, and state are the core pieces of every good fuzzer
|
//! The fuzzer, and state are the core pieces of every good fuzzer
|
||||||
|
|
||||||
use alloc::{boxed::Box, vec::Vec};
|
use alloc::vec::Vec;
|
||||||
use core::{
|
use core::{
|
||||||
borrow::BorrowMut,
|
borrow::BorrowMut,
|
||||||
cell::{Ref, RefMut},
|
cell::{Ref, RefMut},
|
||||||
@ -18,7 +18,7 @@ use std::{
|
|||||||
use libafl_bolts::core_affinity::{CoreId, Cores};
|
use libafl_bolts::core_affinity::{CoreId, Cores};
|
||||||
use libafl_bolts::{
|
use libafl_bolts::{
|
||||||
rands::{Rand, StdRand},
|
rands::{Rand, StdRand},
|
||||||
serdeany::{NamedSerdeAnyMap, SerdeAny, SerdeAnyMap},
|
serdeany::{NamedSerdeAnyMap, SerdeAnyMap},
|
||||||
};
|
};
|
||||||
use serde::{de::DeserializeOwned, Deserialize, Serialize};
|
use serde::{de::DeserializeOwned, Deserialize, Serialize};
|
||||||
|
|
||||||
@ -34,7 +34,7 @@ use crate::{
|
|||||||
generators::Generator,
|
generators::Generator,
|
||||||
inputs::{Input, UsesInput},
|
inputs::{Input, UsesInput},
|
||||||
stages::{HasCurrentStage, HasNestedStageStatus},
|
stages::{HasCurrentStage, HasNestedStageStatus},
|
||||||
Error,
|
Error, HasMetadata, HasNamedMetadata,
|
||||||
};
|
};
|
||||||
|
|
||||||
/// The maximum size of a testcase
|
/// The maximum size of a testcase
|
||||||
@ -155,149 +155,6 @@ pub trait HasScalabilityMonitor {
|
|||||||
fn scalability_monitor_mut(&mut self) -> &mut ScalabilityMonitor;
|
fn scalability_monitor_mut(&mut self) -> &mut ScalabilityMonitor;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Trait for elements offering metadata
|
|
||||||
pub trait HasMetadata {
|
|
||||||
/// A map, storing all metadata
|
|
||||||
fn metadata_map(&self) -> &SerdeAnyMap;
|
|
||||||
/// A map, storing all metadata (mutable)
|
|
||||||
fn metadata_map_mut(&mut self) -> &mut SerdeAnyMap;
|
|
||||||
|
|
||||||
/// Add a metadata to the metadata map
|
|
||||||
#[inline]
|
|
||||||
fn add_metadata<M>(&mut self, meta: M)
|
|
||||||
where
|
|
||||||
M: SerdeAny,
|
|
||||||
{
|
|
||||||
self.metadata_map_mut().insert(meta);
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Gets metadata, or inserts it using the given construction function `default`
|
|
||||||
fn metadata_or_insert_with<M>(&mut self, default: impl FnOnce() -> M) -> &mut M
|
|
||||||
where
|
|
||||||
M: SerdeAny,
|
|
||||||
{
|
|
||||||
self.metadata_map_mut().get_or_insert_with::<M>(default)
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Remove a metadata from the metadata map
|
|
||||||
#[inline]
|
|
||||||
fn remove_metadata<M>(&mut self) -> Option<Box<M>>
|
|
||||||
where
|
|
||||||
M: SerdeAny,
|
|
||||||
{
|
|
||||||
self.metadata_map_mut().remove::<M>()
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Check for a metadata
|
|
||||||
///
|
|
||||||
/// # Note
|
|
||||||
/// For performance reasons, you likely want to use [`Self::metadata_or_insert_with`] instead
|
|
||||||
#[inline]
|
|
||||||
fn has_metadata<M>(&self) -> bool
|
|
||||||
where
|
|
||||||
M: SerdeAny,
|
|
||||||
{
|
|
||||||
self.metadata_map().get::<M>().is_some()
|
|
||||||
}
|
|
||||||
|
|
||||||
/// To get metadata
|
|
||||||
#[inline]
|
|
||||||
fn metadata<M>(&self) -> Result<&M, Error>
|
|
||||||
where
|
|
||||||
M: SerdeAny,
|
|
||||||
{
|
|
||||||
self.metadata_map().get::<M>().ok_or_else(|| {
|
|
||||||
Error::key_not_found(format!("{} not found", core::any::type_name::<M>()))
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
/// To get mutable metadata
|
|
||||||
#[inline]
|
|
||||||
fn metadata_mut<M>(&mut self) -> Result<&mut M, Error>
|
|
||||||
where
|
|
||||||
M: SerdeAny,
|
|
||||||
{
|
|
||||||
self.metadata_map_mut().get_mut::<M>().ok_or_else(|| {
|
|
||||||
Error::key_not_found(format!("{} not found", core::any::type_name::<M>()))
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Trait for elements offering named metadata
|
|
||||||
pub trait HasNamedMetadata {
|
|
||||||
/// A map, storing all metadata
|
|
||||||
fn named_metadata_map(&self) -> &NamedSerdeAnyMap;
|
|
||||||
/// A map, storing all metadata (mutable)
|
|
||||||
fn named_metadata_map_mut(&mut self) -> &mut NamedSerdeAnyMap;
|
|
||||||
|
|
||||||
/// Add a metadata to the metadata map
|
|
||||||
#[inline]
|
|
||||||
fn add_named_metadata<M>(&mut self, name: &str, meta: M)
|
|
||||||
where
|
|
||||||
M: SerdeAny,
|
|
||||||
{
|
|
||||||
self.named_metadata_map_mut().insert(name, meta);
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Add a metadata to the metadata map
|
|
||||||
#[inline]
|
|
||||||
fn remove_named_metadata<M>(&mut self, name: &str) -> Option<Box<M>>
|
|
||||||
where
|
|
||||||
M: SerdeAny,
|
|
||||||
{
|
|
||||||
self.named_metadata_map_mut().remove::<M>(name)
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Gets metadata, or inserts it using the given construction function `default`
|
|
||||||
fn named_metadata_or_insert_with<M>(
|
|
||||||
&mut self,
|
|
||||||
name: &str,
|
|
||||||
default: impl FnOnce() -> M,
|
|
||||||
) -> &mut M
|
|
||||||
where
|
|
||||||
M: SerdeAny,
|
|
||||||
{
|
|
||||||
self.named_metadata_map_mut()
|
|
||||||
.get_or_insert_with::<M>(name, default)
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Check for a metadata
|
|
||||||
///
|
|
||||||
/// # Note
|
|
||||||
/// You likely want to use [`Self::named_metadata_or_insert_with`] for performance reasons.
|
|
||||||
#[inline]
|
|
||||||
fn has_named_metadata<M>(&self, name: &str) -> bool
|
|
||||||
where
|
|
||||||
M: SerdeAny,
|
|
||||||
{
|
|
||||||
self.named_metadata_map().contains::<M>(name)
|
|
||||||
}
|
|
||||||
|
|
||||||
/// To get named metadata
|
|
||||||
#[inline]
|
|
||||||
fn named_metadata<M>(&self, name: &str) -> Result<&M, Error>
|
|
||||||
where
|
|
||||||
M: SerdeAny,
|
|
||||||
{
|
|
||||||
self.named_metadata_map().get::<M>(name).ok_or_else(|| {
|
|
||||||
Error::key_not_found(format!("{} not found", core::any::type_name::<M>()))
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
/// To get mutable named metadata
|
|
||||||
#[inline]
|
|
||||||
fn named_metadata_mut<M>(&mut self, name: &str) -> Result<&mut M, Error>
|
|
||||||
where
|
|
||||||
M: SerdeAny,
|
|
||||||
{
|
|
||||||
self.named_metadata_map_mut()
|
|
||||||
.get_mut::<M>(name)
|
|
||||||
.ok_or_else(|| {
|
|
||||||
Error::key_not_found(format!("{} not found", core::any::type_name::<M>()))
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Trait for the execution counter
|
/// Trait for the execution counter
|
||||||
pub trait HasExecutions {
|
pub trait HasExecutions {
|
||||||
/// The executions counter
|
/// The executions counter
|
||||||
|
@ -18,8 +18,8 @@ use libafl::{
|
|||||||
feedbacks::Feedback,
|
feedbacks::Feedback,
|
||||||
inputs::{HasTargetBytes, UsesInput},
|
inputs::{HasTargetBytes, UsesInput},
|
||||||
observers::{Observer, ObserversTuple},
|
observers::{Observer, ObserversTuple},
|
||||||
state::{HasMetadata, State},
|
state::State,
|
||||||
Error,
|
Error, HasMetadata,
|
||||||
};
|
};
|
||||||
use libafl_bolts::{ownedref::OwnedPtr, Named, SerdeAny};
|
use libafl_bolts::{ownedref::OwnedPtr, Named, SerdeAny};
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
|
@ -9,8 +9,8 @@ use libafl::{
|
|||||||
feedbacks::{Feedback, MinMapFeedback},
|
feedbacks::{Feedback, MinMapFeedback},
|
||||||
inputs::{BytesInput, Input},
|
inputs::{BytesInput, Input},
|
||||||
observers::ObserversTuple,
|
observers::ObserversTuple,
|
||||||
state::{HasMetadata, State},
|
state::State,
|
||||||
Error,
|
Error, HasMetadata,
|
||||||
};
|
};
|
||||||
use libafl_bolts::{impl_serdeany, Named};
|
use libafl_bolts::{impl_serdeany, Named};
|
||||||
use libafl_targets::OomFeedback;
|
use libafl_targets::OomFeedback;
|
||||||
|
@ -23,8 +23,8 @@ use libafl::{
|
|||||||
Monitor, MultiMonitor, SimpleMonitor,
|
Monitor, MultiMonitor, SimpleMonitor,
|
||||||
},
|
},
|
||||||
stages::{HasCurrentStage, StagesTuple},
|
stages::{HasCurrentStage, StagesTuple},
|
||||||
state::{HasExecutions, HasLastReportTime, HasMetadata, HasSolutions, UsesState},
|
state::{HasExecutions, HasLastReportTime, HasSolutions, UsesState},
|
||||||
Error, Fuzzer,
|
Error, Fuzzer, HasMetadata,
|
||||||
};
|
};
|
||||||
use libafl_bolts::{
|
use libafl_bolts::{
|
||||||
core_affinity::Cores,
|
core_affinity::Cores,
|
||||||
|
@ -3,7 +3,7 @@ use std::{
|
|||||||
path::PathBuf,
|
path::PathBuf,
|
||||||
};
|
};
|
||||||
|
|
||||||
use libafl::{state::HasMetadata, Error};
|
use libafl::{Error, HasMetadata};
|
||||||
use libafl_bolts::impl_serdeany;
|
use libafl_bolts::impl_serdeany;
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
use utf8_chars::BufReadCharsExt;
|
use utf8_chars::BufReadCharsExt;
|
||||||
|
@ -7,8 +7,8 @@ use libafl::{
|
|||||||
inputs::UsesInput,
|
inputs::UsesInput,
|
||||||
monitors::SimpleMonitor,
|
monitors::SimpleMonitor,
|
||||||
stages::{HasCurrentStage, StagesTuple},
|
stages::{HasCurrentStage, StagesTuple},
|
||||||
state::{HasExecutions, HasLastReportTime, HasMetadata, HasNamedMetadata},
|
state::{HasExecutions, HasLastReportTime},
|
||||||
Error, Fuzzer,
|
Error, Fuzzer, HasMetadata, HasNamedMetadata,
|
||||||
};
|
};
|
||||||
|
|
||||||
use crate::{fuzz_with, options::LibfuzzerOptions};
|
use crate::{fuzz_with, options::LibfuzzerOptions};
|
||||||
|
@ -8,8 +8,8 @@ use libafl::{
|
|||||||
feedbacks::MapNoveltiesMetadata,
|
feedbacks::MapNoveltiesMetadata,
|
||||||
inputs::UsesInput,
|
inputs::UsesInput,
|
||||||
schedulers::{RemovableScheduler, Scheduler},
|
schedulers::{RemovableScheduler, Scheduler},
|
||||||
state::{HasCorpus, HasMetadata, State, UsesState},
|
state::{HasCorpus, State, UsesState},
|
||||||
Error,
|
Error, HasMetadata,
|
||||||
};
|
};
|
||||||
|
|
||||||
#[derive(Clone, Debug)]
|
#[derive(Clone, Debug)]
|
||||||
|
@ -8,9 +8,7 @@ use std::{
|
|||||||
};
|
};
|
||||||
|
|
||||||
use addr2line::object::{Object, ObjectSection};
|
use addr2line::object::{Object, ObjectSection};
|
||||||
use libafl::{
|
use libafl::{executors::ExitKind, inputs::UsesInput, observers::ObserversTuple, HasMetadata};
|
||||||
executors::ExitKind, inputs::UsesInput, observers::ObserversTuple, state::HasMetadata,
|
|
||||||
};
|
|
||||||
use libafl_qemu_sys::GuestAddr;
|
use libafl_qemu_sys::GuestAddr;
|
||||||
use libc::{
|
use libc::{
|
||||||
c_void, MAP_ANON, MAP_FAILED, MAP_FIXED, MAP_NORESERVE, MAP_PRIVATE, PROT_READ, PROT_WRITE,
|
c_void, MAP_ANON, MAP_FAILED, MAP_FIXED, MAP_NORESERVE, MAP_PRIVATE, PROT_READ, PROT_WRITE,
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
#[cfg(emulation_mode = "usermode")]
|
#[cfg(emulation_mode = "usermode")]
|
||||||
use capstone::{arch::BuildsCapstone, Capstone, InsnDetail};
|
use capstone::{arch::BuildsCapstone, Capstone, InsnDetail};
|
||||||
use hashbrown::HashMap;
|
use hashbrown::HashMap;
|
||||||
use libafl::{inputs::UsesInput, state::HasMetadata};
|
use libafl::{inputs::UsesInput, HasMetadata};
|
||||||
use libafl_qemu_sys::GuestAddr;
|
use libafl_qemu_sys::GuestAddr;
|
||||||
pub use libafl_targets::{
|
pub use libafl_targets::{
|
||||||
cmps::{
|
cmps::{
|
||||||
|
@ -1,9 +1,7 @@
|
|||||||
use std::{path::PathBuf, sync::Mutex};
|
use std::{path::PathBuf, sync::Mutex};
|
||||||
|
|
||||||
use hashbrown::{hash_map::Entry, HashMap};
|
use hashbrown::{hash_map::Entry, HashMap};
|
||||||
use libafl::{
|
use libafl::{executors::ExitKind, inputs::UsesInput, observers::ObserversTuple, HasMetadata};
|
||||||
executors::ExitKind, inputs::UsesInput, observers::ObserversTuple, state::HasMetadata,
|
|
||||||
};
|
|
||||||
use libafl_qemu_sys::{GuestAddr, GuestUsize};
|
use libafl_qemu_sys::{GuestAddr, GuestUsize};
|
||||||
use libafl_targets::drcov::{DrCovBasicBlock, DrCovWriter};
|
use libafl_targets::drcov::{DrCovBasicBlock, DrCovWriter};
|
||||||
use rangemap::RangeMap;
|
use rangemap::RangeMap;
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
use std::{cell::UnsafeCell, cmp::max};
|
use std::{cell::UnsafeCell, cmp::max};
|
||||||
|
|
||||||
use hashbrown::{hash_map::Entry, HashMap};
|
use hashbrown::{hash_map::Entry, HashMap};
|
||||||
use libafl::{inputs::UsesInput, state::HasMetadata};
|
use libafl::{inputs::UsesInput, HasMetadata};
|
||||||
use libafl_qemu_sys::GuestAddr;
|
use libafl_qemu_sys::GuestAddr;
|
||||||
#[cfg(emulation_mode = "systemmode")]
|
#[cfg(emulation_mode = "systemmode")]
|
||||||
use libafl_qemu_sys::GuestPhysAddr;
|
use libafl_qemu_sys::GuestPhysAddr;
|
||||||
|
@ -8,11 +8,7 @@ use core::{
|
|||||||
};
|
};
|
||||||
|
|
||||||
#[cfg(feature = "fork")]
|
#[cfg(feature = "fork")]
|
||||||
use libafl::{
|
use libafl::{events::EventManager, executors::InProcessForkExecutor, state::HasLastReportTime};
|
||||||
events::EventManager,
|
|
||||||
executors::InProcessForkExecutor,
|
|
||||||
state::{HasLastReportTime, HasMetadata},
|
|
||||||
};
|
|
||||||
use libafl::{
|
use libafl::{
|
||||||
events::{EventFirer, EventRestarter},
|
events::{EventFirer, EventRestarter},
|
||||||
executors::{
|
executors::{
|
||||||
@ -24,7 +20,7 @@ use libafl::{
|
|||||||
fuzzer::HasObjective,
|
fuzzer::HasObjective,
|
||||||
observers::{ObserversTuple, UsesObservers},
|
observers::{ObserversTuple, UsesObservers},
|
||||||
state::{HasCorpus, HasExecutions, HasSolutions, State, UsesState},
|
state::{HasCorpus, HasExecutions, HasSolutions, State, UsesState},
|
||||||
Error,
|
Error, HasMetadata,
|
||||||
};
|
};
|
||||||
use libafl_bolts::os::unix_signals::{siginfo_t, ucontext_t, Signal};
|
use libafl_bolts::os::unix_signals::{siginfo_t, ucontext_t, Signal};
|
||||||
#[cfg(feature = "fork")]
|
#[cfg(feature = "fork")]
|
||||||
|
@ -4,7 +4,7 @@ use std::{
|
|||||||
sync::Mutex,
|
sync::Mutex,
|
||||||
};
|
};
|
||||||
|
|
||||||
use libafl::{inputs::UsesInput, state::HasMetadata};
|
use libafl::{inputs::UsesInput, HasMetadata};
|
||||||
use libafl_qemu_sys::{GuestAddr, MmapPerms};
|
use libafl_qemu_sys::{GuestAddr, MmapPerms};
|
||||||
use meminterval::{Interval, IntervalTree};
|
use meminterval::{Interval, IntervalTree};
|
||||||
use thread_local::ThreadLocal;
|
use thread_local::ThreadLocal;
|
||||||
|
@ -18,8 +18,8 @@ use libafl::{
|
|||||||
observers::{HitcountsMapObserver, StdMapObserver, TimeObserver},
|
observers::{HitcountsMapObserver, StdMapObserver, TimeObserver},
|
||||||
schedulers::{IndexesLenTimeMinimizerScheduler, QueueScheduler},
|
schedulers::{IndexesLenTimeMinimizerScheduler, QueueScheduler},
|
||||||
stages::StdMutationalStage,
|
stages::StdMutationalStage,
|
||||||
state::{HasCorpus, HasMetadata, StdState},
|
state::{HasCorpus, StdState},
|
||||||
Error,
|
Error, HasMetadata,
|
||||||
};
|
};
|
||||||
use libafl_bolts::{
|
use libafl_bolts::{
|
||||||
core_affinity::Cores,
|
core_affinity::Cores,
|
||||||
|
@ -21,8 +21,8 @@ use libafl::{
|
|||||||
observers::{HitcountsMapObserver, TimeObserver},
|
observers::{HitcountsMapObserver, TimeObserver},
|
||||||
schedulers::{IndexesLenTimeMinimizerScheduler, QueueScheduler},
|
schedulers::{IndexesLenTimeMinimizerScheduler, QueueScheduler},
|
||||||
stages::{ShadowTracingStage, StdMutationalStage},
|
stages::{ShadowTracingStage, StdMutationalStage},
|
||||||
state::{HasCorpus, HasMetadata, StdState},
|
state::{HasCorpus, StdState},
|
||||||
Error,
|
Error, HasMetadata,
|
||||||
};
|
};
|
||||||
use libafl_bolts::{
|
use libafl_bolts::{
|
||||||
core_affinity::Cores,
|
core_affinity::Cores,
|
||||||
|
@ -24,7 +24,8 @@ use libafl::{
|
|||||||
observers::{HitcountsMapObserver, TimeObserver, VariableMapObserver},
|
observers::{HitcountsMapObserver, TimeObserver, VariableMapObserver},
|
||||||
schedulers::{IndexesLenTimeMinimizerScheduler, QueueScheduler},
|
schedulers::{IndexesLenTimeMinimizerScheduler, QueueScheduler},
|
||||||
stages::{ShadowTracingStage, StdMutationalStage},
|
stages::{ShadowTracingStage, StdMutationalStage},
|
||||||
state::{HasCorpus, HasMetadata, StdState},
|
state::{HasCorpus, StdState},
|
||||||
|
HasMetadata,
|
||||||
};
|
};
|
||||||
use libafl_bolts::{
|
use libafl_bolts::{
|
||||||
core_affinity::Cores,
|
core_affinity::Cores,
|
||||||
|
@ -11,8 +11,7 @@ use libafl::{
|
|||||||
cmp::{AFLppCmpValuesMetadata, CmpMap, CmpObserver, CmpObserverMetadata, CmpValues},
|
cmp::{AFLppCmpValuesMetadata, CmpMap, CmpObserver, CmpObserverMetadata, CmpValues},
|
||||||
Observer,
|
Observer,
|
||||||
},
|
},
|
||||||
state::HasMetadata,
|
Error, HasMetadata,
|
||||||
Error,
|
|
||||||
};
|
};
|
||||||
use libafl_bolts::{ownedref::OwnedRefMut, Named};
|
use libafl_bolts::{ownedref::OwnedRefMut, Named};
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
|
@ -9,8 +9,7 @@ use libafl::{
|
|||||||
executors::ExitKind,
|
executors::ExitKind,
|
||||||
inputs::UsesInput,
|
inputs::UsesInput,
|
||||||
observers::{cmp::CmpValuesMetadata, CmpMap, CmpObserver, Observer},
|
observers::{cmp::CmpValuesMetadata, CmpMap, CmpObserver, Observer},
|
||||||
state::HasMetadata,
|
Error, HasMetadata,
|
||||||
Error,
|
|
||||||
};
|
};
|
||||||
use libafl_bolts::{ownedref::OwnedMutPtr, Named};
|
use libafl_bolts::{ownedref::OwnedMutPtr, Named};
|
||||||
|
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user