* introducing Launcher::overcommit
* removing unnecessary cfg restrictions and clippy allows
* improving warning for wrong clang-format version
* installing black in the format CI
* Enforcing python formatting in CI
* extending formatting using black on all python files
* printing diff on black failure
* preferring python's black over system black
* moving to LLVM 19 for formatting
* centralize clippy definition
* fmt
* add update bindings script
* add a checked and unchecked version of memory read to qemu stuff
also, a lot of clippy thing
* update binding position
* rm old script, new one is a bit better
* update doc
* macos clippy
* adapt fuzzers
* windows clippy
* fix fuzzer
* windows clippy
* remove old allowed clippy
* remove some allowed clippy
* use default features for serde_json in gramatron
* better error handler for failed rw to memory
* change fuzzbench_qemu
* real test
* fix qemu crash hook
* update bindings
* fix fork executor, reduce trait bound overhead
* make EdgeModule depend on observer to get ptrs.
* do not make EdgeCoverageModule::new public
* map observer as builder call
* adapt examples with new edge coverage module builder.
* TMP: everyone is a variable length map observer
* reuse profile path script
* fix absolute paths
* remove some dependencies to make pipeline faster
* compile-time builder initialization check
---------
Co-authored-by: Romain Malmain <romain.malmain@pm.me>
* Rand below should take a NonZero parameter
* More
* more
* More
* fix build
* bit of clippy
* more clippy
* more clippy
* More clippy
* More more
* more nonzero
* fix multipart
* Cleanup, more unsafe
* fix
* fix unicode
* clippy, fmt
* more
* More safer and more better
* MaxStackPow
* fix merge fails
* make random_slize_size faster
* fix
* more
* fix
* linux kernel (x509_cert) and process fuzzing example
* rework filters
* update to latest qemu
* working for process and kernel fuzzing
* new i2s mutator for binary only fuzzers
* refactoring modules with new filtering interface
* add state as parameter of harness
* hide unused global in usermode
* Script for stub bindings generation
* do not try to check whether it is worth generating the bindings, always
generate when the env variable is on.
* add taplo to fmt_all.sh
* Moved fuzzers (again) in a target-centric way.
* fix rust 2024 warnings.
* new libafl_qemu harness structure.
* rename qemu_systemmode into qemu_baremetal
* fix qemu baremetal makefile
* fix formatter
---------
Co-authored-by: Toka <tokazerkje@outlook.com>
use of LLVM 19 by default
LLVM version should be much easier to switch from now on
a lot of code repetition has been deleted
removed llvm-related github action
fix format check
other small things
---------
Co-authored-by: Toka <tokazerkje@outlook.com>
* Helper is now called Module.
* Emulator now contains hooks state.
* Emulator is managed by QemuExecutor.
* QEMU hooks have been completely refactored on the rust side.
* Generics cleanup.
* aa
* why??????????????
* ppp
* aa
* aa
* abcde
* fixer
* ppp
* aa
* fix from windows
* sugar
* ff
* ??
* a
* to log::error
* exclude
* exclude libafl_qemu clippy on windows
* pp
* aa
---------
Co-authored-by: Your Name <you@example.com>
* All Ids should be id not idx
* More
* fix
* win?
* win?
* win?
* fix
* more fix
* desyscall?
* more
* fmt
* std
* make id less id-y
* fmt
* fix
* cleanup
* fixes all around
* fix
* Fix the broken stuff from refactoring
* remove unused
---------
Co-authored-by: Dongjia "toka" Zhang <tokazerkje@outlook.com>
* 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
* try this thing
* this?
* use new mmap signature in nix.
* fix import
* fix to work with addr2line v0.23.
* remove unused flag
* update strum also for dependency...
* clippy
* clippy
* update lain git hash
* bump many outdated crates
* fix hash
* rands: use splitmix64 for seeding
Seeding with splitmix64 is a good way to avoid starting with
low-entropy PRNG states, and is explicitly recommended
by the authors of both xoshiro256++ and Romu.
While at it, give the xoshiro256++ PRNG its proper name.
* rands: use fast_bound() to generate number in range
* rands: add top-level choose()
* rands: add Rand::next_float()
* rands: add Rand::coinflip() helper
* libafl: unbreak tests that relied on direct seeding
* rands: add SFC64 PRNG
SFC64 is a well-established and well-understood PRNG designed by
Chris Doty-Humphrey, the author of PractRand. It has been tested
quite a lot over the years, and to date has no known weaknesses.
Compared to xoshiro256++, it is slightly faster and is likely to
be a more future-proof design (xoshiro/xoroshiro family of generators
come with quite long history of [flaws][1] found over the years).
Compared to Romu, it is slightly slower, but guarantees absense
of bias, minimum period of at least 2^64 for any seed, and
non-overlapping streams for different seeds.
[1]: https://tom-kaitchuck.medium.com/designing-a-new-prng-1c4ffd27124d
* remove unneeded loop in `SpliceMutator::mutate`
previously we searched for the first and the last difference
between exactly the same 2 inputs 3 times in a loop
* remove unused struct fields
* avoid allocating strings for `Transition`s
* avoid allocating `String`s for `Stack`s
* avoid allocating Strings for `Element`s
* apply some clippy lints
* some more clippy lints
* simplify regex
* remove superflous if condition
* remove the Rc<_> in `Element`
* small cleanups and regex fix
* avoid allocating a vector for the culled pda
* bug fix
* bug fix
* reintroduce the Rc, but make it use the *one* alloced VecDeque this time
* slim down dependencies
* use Box<[&str]> for storted state stacks
this saves us a whopping 8 bytes ;), since we don't have to store
the capacity
* revert the changes from 9ffa715c10089f157e4e20563143a2df890c8ffe
fixes a bug
* apply clippy lint
---------
Co-authored-by: Andrea Fioraldi <andreafioraldi@gmail.com>