Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implement an Atheris fuzzing backend #3912

Open
Zac-HD opened this issue Mar 9, 2024 · 1 comment
Open

Implement an Atheris fuzzing backend #3912

Zac-HD opened this issue Mar 9, 2024 · 1 comment
Labels
interop how to play nicely with other packages

Comments

@Zac-HD
Copy link
Member

Zac-HD commented Mar 9, 2024

Now that we support alternative backends, it'd be great to improve our support for fuzzing with https://github.com/google/atheris. Currently, you can use this with test_fn.hypothesis.fuzz_one_input(), but as for Crosshair the complicated parsing logic is difficult for a fuzzer.

It'd be great to manage the setup and fuzz calls, sensible defaults for instrumentation with the option of user control, using FuzzedDataProvider to implement a PrimitiveProvider. For bonus points, warm-start Atheris by loading from the Hypothesis database (inc. HypoFuzz's keys) and writing out the corpus translated into the FuzzedDataProvider format (difficulty: really annoying until we finish the IR project).

Not sure exactly what interface I'd want, whether it's just a backend and the setup is users' problem, or whether we also provide a test_fn.hypothesis.fuzz_with_atheris(...) helper function. It'd be nice, but require a lot of UX choices we might not want to make.

@Zac-HD Zac-HD added the interop how to play nicely with other packages label Mar 9, 2024
@Zac-HD
Copy link
Member Author

Zac-HD commented Apr 26, 2024

See also: Zac-HD/hypofuzz#36 for a HypoFuzz backend. That's likely to perform somewhat better for pure-Python code, but doesn't have the native support for native-code coverage.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
interop how to play nicely with other packages
Projects
None yet
Development

No branches or pull requests

1 participant