* update tuneable: consistently access metadata + force 'choice'
* oops, loop in the wrong place
* clarify API some; allow for least of set configuration
* Add an example fuzzer with AFL-Style UI
* fix CI errors
* fix CI and improve the UI
---------
Co-authored-by: toseven <Byone.heng@gmail.com>
Co-authored-by: Dominik Maier <domenukk@gmail.com>
* add the metrics(pending,own_finds,imported)
* add the pend_fav metrics
* push
* Add the feature that AFLStats is computed and reported in AFLStatsStage
* fix some cicd errors
* AFLStats migrates to stage/stats.rs
* fix the cicd error
* fix some bugs and resolve the conflicts
* fix some typos
---------
Co-authored-by: toseven <Byone.heng@gmail.com>
Co-authored-by: toka <tokazerkje@outlook.com>
Co-authored-by: Dominik Maier <domenukk@gmail.com>
* implement an AFL-Style TUI
* improve the tui/mod.rs according to the reviews
* fixing fmt manually
---------
Co-authored-by: toseven <Byone.heng@gmail.com>
Co-authored-by: Dominik Maier <domenukk@gmail.com>
* Make xxh3 hashing optional (and default to ahash)
* make xxh3 default anyway
* move import
* fix no_alloc
* No ahash without alloc
* fix import
* Keep xxh3 as default for libafl as well
* no randomness for xoshiro
previously we searched for the first and the last difference
between exactly the same 2 inputs 3 times in a loop
Co-authored-by: Andrea Fioraldi <andreafioraldi@gmail.com>
* update documentation of `MinimizerScheduler`
(convert a few references to types into doc links and update the docs of `on_remove`)
* replace manual implementation of `slice::fill`
the in the code comment linked stackoverflow comment https://stackoverflow.com/a/51732799/1345238/
now mentions `slice::fill`
it seems to compile to the same thing as the old version https://rust.godbolt.org/z/98Y4x97vY
* fix docs for the `*InterestingMutator`s and `*ByteAddMutator`s
the macros didn't previously docs gens didn't previously
generate fitting docs
* Make cmp metadata generic, rename ForkserverCmpObservers with more accurate names
* Fix zeroed assignment in cmplogmap
* Dont use prelude in libafl_targets
* Make _mut functions actually return mut references
* Fix fuzzbench forkserver build
* Add type alias for easier construction of the standard cmp observer and add aux data accessors
* squash libfuzzer edits
* fixup: compat with custom mutators
* use tui flag
* add introspection support
* use libfuzzer dep now that we've merged
* force input loading
* some fixes
* begin docs, impl shrink
* make whole-archive conditional and not default
* make more copies of counters maps
* lol, remember to add the observer
* make size edge map observer an observer
* fixup: make def of run driver conditional
* add sanity checks for insertion
* revert silencing of forks
* add experimental tmin support; add default asan flags
* use default options instead of specifying our own
* implement lockless mode
* fix merge
* fixup lockless corpus
* fixup for generalisation
* remove erroneous drop_in_place
* improve error logging in the case of corpus loading failure
* ok, use lock files 😔
* fix tmin
* implement merge (again); fix rare cases with maps being too small
* implement a scheduler for removing excess
* implement a walking strategy for corpus loading for large corpora
* revert filename parameter; rename and remove duplicates
* various cleanup and clippy satisfaction
* fix no_std tests
* clang-format
* expand and satisfy the clippy gods
* fix sanitizer_ifaces bindgen for no_std
* fix wasm fuzzer
* fixup clippy script
* rename and provide a small amount of explanation for sanitizer_interfaces
* fixup: HasLastReportTime
* fix clippy oddities
* restrict clippy checks to linux-only for libafl_libfuzzer_runtime
* name the mutators
* format
* fix clippy warning
* hope docker is fixed
* fix cmin lint
* clippy pass
* more docs
* more clippy
* fix remaining clippy complaints
* fix import
* miri fixes (no constructors executed)
* exclude libafl_libfuzzer from cargo-hack
* fix clippy check for sanitizer_interfaces
* fmt
* fix CI (?)
* deduplicate sancov 8bit for improved perf on ASAN
* merge 8bit coverage regions + comment out insane deduplication
* no erroring out on free hooks
* fixup for non-forking merge
* skip the corpus dir if we use it
* fixup: recent libafl changes and feature flags
* libafl_libfuzzer: use rust-lld for whole-archive feature
* clarify cause of failure
* mark unsafe
* clippy :cursed_cowboy:
* attempt to fix wasm
* spooky unknowable bug 👻
* more clippy lints
* clippy fix for merge
* use the version pin
* add unsafe to ::register
* Serdeany autoreg fix
* make type assert actionable
* miri fixes
---------
Co-authored-by: Dominik Maier <domenukk@gmail.com>
Co-authored-by: Dominik Maier <dmnk@google.com>
Co-authored-by: Mrmaxmeier <Mrmaxmeier@gmail.com>
* Allow setting the max iterations
* Rename API
* Fix baby_fuzzer_grimoire
* Relax bound
* Also add a new API for transforming
* Revert back grimoire fix
* Revert bound relax
* Make some functions const
* fix isprint
* more const
* move integer_sqrt to bolts, use binary search, use u128 to handle extreme values
* Technically correct
* clippy
* u64 algo
* More test
* cumulative_distribution to in_place
* move calculate_cumulative_distribution_in_place to bolts
* clippy
* Move math stuff to bolts::math
* actually add math
* math?
* For some reason this fixes things, dunno
* fix builds?
* does that help?
* clippy ignores
* more clean clippy
* more cfg_attr
This commit fixes some issues regarding the `TuneableScheduledMutator`,
which had an edge case for drawing probabilities.
The user is supposed to provide a vector with probabilities that have to
add up to 1.0, but due to floating-point errors, the number can be
sligthly off.
If the sum ends up being slow, there's a chance that we draw a number
that is bigger than it (for example, 1.0), and that would not be present
in the cumulative distribution vectors (either for iterations or
mutations).
The issue is fixed by setting the last value of the cumulative
distribution to 1.0.
This commits adds some validations in the function that calculates the
cumulative distribution function, making sure that the numbers add up to
1, and that they are all between 0 and 1.
The API is now changed so the functions can now return an error instead
of crashing.
The commit also adds some tests, and fixes the `reset()` function.
This commit rewrites the centralized manager to use a secondary broker, as p2p communication is unreliable during frequent restarts. A centralized launcher is introduced too.
* More less default
* More clippy
* updated rangemap
* Clean up depencdencies
* Undo accidental remove
* Fix
* trying to fix qemu build
* hexagon be gone