* add support for cycling PowerSchedule on completion of a queue cycle in WeightedScheduler
* improve doc
* make fn cycle_schedule private
* rename cycle_schedules to cycling_scheduler
* Fix docs on crates.io for LibAFL_Frida, introduce auto-download feature
* remove it more
* more testing
* more features
* more CI
* CI?
* CI?
* More fix?
* nicer
* More fix?
* test?
* more try?
* why?
* more more
* change Stability calculation formla to AFL++'s
* clippy
* use MapFeedbackMetadata instead of recalculating filled entries in map
* calculate filled entries if MapFeedbackMetadata is not available
---------
Co-authored-by: Dongjia "toka" Zhang <tokazerkje@outlook.com>
* generic inner manager for centralized, with builder closures.
* moved options inside the function
* removed useless bound
* unused import
* remove useless clone bound.
* make clearer what is secondary node
* same inner manager for main and secondary
* fix example
* enforce minimum and maximum input size for Forkserver's shared memory map and file based testcases
* explicit conversion to OwnedSlice
* clippy
* error if min_input_size > max_input_size when building forkserver
* use Self::State as much as possible
* makeing progress, little by little
* more
* add
* more and more
* more
* more
* mre
* fix
* a
* pp
* fix
* fix
* more
* version
* fix cargo fuzz
* introduce feedbacks hit tracking for testcases
* make Testcase::hit_feedbacks into Cow<&str> instead of String
rename get_hit_feedbacks to append_hit_feedbacks
update documentation
* simplify ConstFeedback
* rename Feedback::last_result to prev_result
* impl TODO prev_result for NewHashFeedback, ListFeedback, TransferredFeedback, NautilusFeedback
* rename prev_result to last_result
* add docs
* introduce Objectives hit tracking
* update docs
* update Cargo.toml docs
* update docs
* track Feedbacks & Objectives hit in Fuzzer::add_input
* fmt
* clippy
* fix type error in OomFeedback::last_result
* impl last_result for AsanErrorsFeedback
* add track_hit_feedbacks as a feature to libafl_libfuzzer_runtime
* fix clippy
* change return type of Feedback::last_result to a Result
* remove expect in NewHashFeedback::is_interesting
* move Error::premature_last_result to libafl from libafl_bolts
* Make every builder ::builder()
* Fix no_std
* More
* Fix clippy, stuff
* More fun
* Make NopShMem do something
* Alloc
* more fmt
* Remove UB in tinyinst executor builder
* Make builder order not matter for tinyinst
* More better
* fix
* docs
* fmt
* more fmt
* clippy
* fix fixes
* tiny thing
* more betterg
* more more
* more builder
* more builder
* more nyx
* undo breaking clippy
* clip
* Factor out `StageStack` from `StdState`
Refactoring for the sake of abstraction and maintainability.
Previously, the `stage_idx_stack` and `stage_depth` fields of
`StdState` had an implicit relationship to one another. This commit
reifies this relationship into a new `struct`. Its fields are hidden
from everything else in `StdState`. It `impl`s `HasCurrentStage` and
`HasNestedStageStatus`, which `impl`s now no longer have mutable access
to the whole state. The `impl`s for `StdState` just forward to these
ones.
Hopefully, this refactoring would make it easier to `impl State` for
other types in the future.
* Create `StageIdx` newtype
Like `CorpusId`, this is just a thin wrapper around `usize`.
* unused import
* Rename a few functions to be more about indices
* Rename Index to Id, fmt
* Move StageId around
---------
Co-authored-by: Langston Barrett <langston.barrett@gmail.com>
* add peek function to Corpus
* send 0 as next peek in NopCorpus
* rename peek to peek_next_free_id
* fix clippy
* add peek_next_free_id to libafl_libfuzzer
* impl peek_next_free_id for ArtifactCorpus
* Add BytesSubMutator that allows us to mutate sub-parts of a bytes-backed input
* no_std
* fix string mutator
* make build
* Fix clippy on macOS
* Docs
* More docs
* Better docs
* --amend
* Renamed bsi to sub_input. Too much BSI
* More more
* balance backticks
* Make splicing usable with sub_input (not that it makes sense)
* More annotations
* more input annotations?
* Implement HasMutatorBytes for &mut Vec
* clippy
* Use a wrapper type instead
* Add wrapper type for Vec as well
* Remove the duplicate BytesInput... lol
* Fixed infinite loop on SyncDiskStage
* cargo fmt
* added debug messages
* Add left to sync to metadata. Replace HashSet with Vec
* added check on state metadata to not crash in case it's None (start fuzzing without files to sync)
* fmt & clippy
---------
Co-authored-by: Dominik Maier <domenukk@gmail.com>
* add AFL stage names for calibration, colorization, power and sync stages
* clippy
* add missing name field in sync stage
* use consts instead of hardcoding in functions.
change set_name to with_name for PowerMutationalStage
remove irrelevant fn transforming
* make AFL++ name default for all stages