-
Notifications
You must be signed in to change notification settings - Fork 1.1k
Open
Labels
Description
Over the years we've created or contracted the creation of several different fuzz harnesses (the tx fuzzer, an overlay fuzzer, a half dozen soroban fuzzers).
These have all to varying extent suffered from neglect:
- Some don't even get committed/merged into any main repos (eg. they're just part of audit contracts)
- Some don't all get built or checked for correct function regularly
- Some (most? all?) don't get run continuously
- We're not in oss-fuzz in particular
- They're not integrated into (pseudo-)randomized unit testing very well (we use an ancient version of autocheck; it might be nice to try to expose such tests as miniature fuzz harnesses (eg. in github.com/google/fuzztest)
It would be nice to have a bit more unified infrastructure for fuzzing to address these shortcomings. Ideally we'd have:
- a single top-level entrypoint dispatching to all existing fuzz harnesses in core and soroban
- that is merged into master and built-and-run-a-bit as part of CI so it never breaks
- that is driven by the best option for fuzzer engines (probably honggfuzz)
- that is registered with oss-fuzz for continuous fuzzing on google infra
- that is easy and obvious to extend with new harnesses when we contract for them
- bonus: that is connected in some way to unit tests so they can naturally get registered as more harnesses