* impr(frida): Don't keep FuzzerOptions in Helper
Instead, keep the actual values that are needed. This allows us to make
a builder for FridaInstrumentationBuilder in a subsequent commit.
* refactor(frida): Move workaround to separate method
This is just code movement.
* refactor(frida): move transformer initialization
Mostly code movement here, sets up replacing `new` with a builder. The
one exception is the introduction of a lifetime bound on RT, which needs
to outlive the transformer. This could be generic, but there's probably
no reason to introduce an additional lifetime.
However, because of this lifetime introduction, this is _technically_ a
breaking change.
* impr(frida): Pass module map to runtimes
Instead of passing a slice of modules to instrument, and re-building the
modulemap, pass a Ref-counted module map directly to the initialization.
* feat(frida): Builder for InstrumentationHelper
Co-authored-by: Dominik Maier <domenukk@gmail.com>
* impr(frida/alloc): optional options in allocator
Move all the initialization into Default::default with sensible defaults
and override parameters set from options in new.
* impr(frida): remove options from AsanError
The only option AsanError uses is whether to continue on error. Instead
of keeping a whole clone of the options around, just store that single
boolean value.
* impr(frida/asan): Use less FuzzerOptions
* Implement Default::default to get a good default AsanRuntime
---------
Co-authored-by: Dominik Maier <domenukk@gmail.com>
* 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
* feat: support specify thread id for frida stalker
* fix: thread_id type
* fix: use official repo for frida-gum
* Merged
* Added back missing bolts
---------
Co-authored-by: Dominik Maier <domenukk@gmail.com>
* More less default
* More clippy
* updated rangemap
* Clean up depencdencies
* Undo accidental remove
* Fix
* trying to fix qemu build
* hexagon be gone
* WIP: fix ub issue in frida fuzzers
* refactor frida helper: remove unused fields
* revert frida-gum bump. Current frida-gum doesn't build on iOS :/
* libafl_frida: silence must_use_candidate lint
this lint is very noisy, and adding #[must_use] to _all_
(even pure )functions seems very excessive to me
* fix clippy
* Add more features to libafl_qemu to remove some of the heavy lifting from the fuzzers
* Refactor qemu_coverage
* Minor tweaks to fix other fuzzers
* Autofix
* Add CallingConvention to write_function_argument
* Replay reverted clippy fixes
---------
Co-authored-by: Your Name <you@example.com>
* Change executor trait to allow \&mut Input
* Add mut inprocess executor
* Add mut inprocess executor
* Format and fix clippy errors
* Fix more clippy errors
* Revert accidental refactoring of InMemoryCorpus
* Add mut versions of all executors that can support it
* Do not persist possible testcase mutation in stages, shadow/differential executors, or corpus minimization
* Fix missing imports
* Fix executor type for missed qemu items
* Add re-exports for mut executors
* Use InProcessForkExecutorMut in QemuForkExecutorMut
* Update BytesInput harnesses to take mutable references
* Update other-input-type-taking harnesses to take mut references
* Clippy fixes
* Feature gate TryFromIntError import
* Fix missed harness input type in baby_fuzzer
* Fix additional clippy issues
* Fix unnecessary hashes on string literal
* Even MORE clippy fixes
* Fix one more clippy issue
---------
Co-authored-by: Dongjia "toka" Zhang <tokazerkje@outlook.com>
* Insert into corpus if feedback is_interesting on crash/timeout
* Use correct import for HasExecutions
* Windows add missing import
* QemuExecutor add HasFeedback
* Windows asan fix
* Add missing call to scheduler.on_add
* Add missing HasExecutions for windows frida
* QemuExecutor missing HasScheduler
* QemuExecutor missing HasCorput
* ci
* fi
* Revert "fi"
This reverts commit ed298d71057607f019e64d58687273a01d30e260.
* Revert "ci"
This reverts commit 6b65936990143a6069abd56dcbe633ac37be2ede.
* fi
* scheduler replace fixes
* oops, no-std
* add
* changes on the fuzzers
* move map feedback history updates to append_metadata
* fixes for python bindings
* learn to clippy
* fix for fuzzer add_input
* clippy fixes for frida
* additional powersched differences
* corrections for bitmap_size
* off-by-one
* I live in a prison of my own creation and clippy is the warden
* clear the novelties map for the situation where is_interesting is invoked, but not append_metadata
---------
Co-authored-by: tokatoka <tokazerkje@outlook.com>
Reduces total number of packages from 577 to 571 on building with:
`cargo +nightly build --workspace --all-features`
* ahash 0.7 -> 0.8
* Move `AHasher::new_with_keys` to `RandomState::with_seeds` given the
recommendation from: aHash maintainer:
https://github.com/tkaitchuck/aHash/issues/132#issuecomment-1288207069
* bindgen: 0.61 -> 0.63
* c2rust-bitfields: 0.3 -> 0.17
* criterion: 0.3 -> 0.4
* crossterm: 0.25 -> 0.26
* dynasmrt: 1.2 -> 2
* goblin: 0.5.3 -> 0.6
* hashbrown: 0.12 -> 0.13
* nix: 0.25 -> 0.26
* The `addr` arg of `mmap` is now of type `Option<NonZeroUsize>`
* The `length` arg of `mmap` is now of type `NonZeroUsize`
* Requires updating implementers to update `nix` as well
* prometheus-client: 0.18.0 -> 0.19
* Do not box metrics
* Gauges (a majority of the LibAFL metrics) are now i64 types so there
is a small chance of overflow, with the u64 values that LibAFL
tracks, but unlikely to be problematic.
* Keep `exec_rate` as a floating point value
* serial_test: 0.8 -> 1
* typed-builder: 0.10.0 -> 0.12
* windows: 0.42.0 -> 0.44
Co-authored-by: Dominik Maier <domenukk@gmail.com>