| ## Unreleased |
| |
| Released YYYY-MM-DD. |
| |
| ### Added |
| |
| * TODO (or remove section if none) |
| |
| ### Changed |
| |
| * TODO (or remove section if none) |
| |
| ### Deprecated |
| |
| * TODO (or remove section if none) |
| |
| ### Removed |
| |
| * TODO (or remove section if none) |
| |
| ### Fixed |
| |
| * TODO (or remove section if none) |
| |
| ### Security |
| |
| * TODO (or remove section if none) |
| |
| -------------------------------------------------------------------------------- |
| |
| ## 0.4.6 |
| |
| Released 2023-01-26. |
| |
| ### Fixed |
| |
| * Fixed a potential name conflict in functions generated by the `fuzz_target!` |
| macro. |
| * Fixed potential stale builds when updating custom libfuzzers to link against. |
| |
| -------------------------------------------------------------------------------- |
| |
| ## 0.4.5 |
| |
| Released 2022-10-18. |
| |
| ### Added |
| |
| * Added the ability to tell libfuzzer whether to keep files inputs in the corpus |
| or not. See the `Corpus` type and extended documentation for the |
| `fuzz_target!` macro for details. |
| |
| ### Changed |
| |
| * Ensured that there is always at least one inline-never frame on the stack per |
| fuzz target. This helps prevent oss-fuzz from "deduplicating" different bugs |
| from different fuzz targets into the same bug. |
| |
| -------------------------------------------------------------------------------- |
| |
| ## 0.4.4 |
| |
| Released 2022-09-01. |
| |
| ### Changed |
| |
| * Updated to `libFuzzer` commit `df90d22` (`release/15.x`). |
| * LLVM 16's [upcoming change][llvm_cxx17] to build requirements to C++17 |
| necessitate reflecting those changes. (`libFuzzer` updates contain C++14 code) |
| * Drastically reduce build times by using parallel C++ compilation jobs |
| * Updated `rand` dependency from 0.8.3 to 0.8.5 |
| * Updated `flate2` dependency from 1.0.20 to 1.0.24 |
| |
| [llvm_cxx17]: https://llvm.org/docs/ReleaseNotes.html#update-on-required-toolchains-to-build-llvm |
| |
| -------------------------------------------------------------------------------- |
| |
| ## 0.4.3 |
| |
| Released 2020-03-03. |
| |
| ### Changed |
| |
| * Updated to `libFuzzer` commit `60e32a1`. |
| |
| ### Fixed |
| |
| * Fixed an issue where the `fuzz_target!` macro would sometimes expand to |
| versions of itself that were not `$crate` prefixed and would result in "error: |
| cannot find macro `fuzz_target` in this scope" if the caller didn't import the |
| macro but used the qualified version of it instead. |
| |
| -------------------------------------------------------------------------------- |
| |
| ## 0.4.2 |
| |
| Released 2020-05-26. |
| |
| ### Changed |
| |
| * Improved performance of checking for whether `cargo fuzz` is requesting the |
| `std::fmt::Debug` output of an input or not. This is always false during |
| regular fuzzing, so making this check faster should give slightly better |
| fuzzing throughput. |
| |
| -------------------------------------------------------------------------------- |
| |
| ## 0.4.1 |
| |
| Released 2020-05-13. |
| |
| ### Added |
| |
| * Added support for defining custom mutators. See [the documentation for the |
| `fuzz_mutator!` |
| macro](https://docs.rs/libfuzzer-sys/0.4.1/libfuzzer_sys/macro.fuzz_mutator.html) |
| for details. |
| |
| ### Changed |
| |
| * Upgraded libfuzzer to llvm/llvm-project's 70cbc6d. |
| |
| -------------------------------------------------------------------------------- |
| |
| ## 0.4.0 |
| |
| Released 2021-02-24. |
| |
| ### Changed |
| |
| * The public `arbitrary` dependency was updated to version 1.0. |
| |
| -------------------------------------------------------------------------------- |
| |
| ## 0.3.5 |
| |
| Released 2020-11-18. |
| |
| ### Changed |
| |
| * [Upgrade libfuzzer to 7bf89c2](https://github.com/rust-fuzz/libfuzzer/pull/68) |
| |
| -------------------------------------------------------------------------------- |
| |
| ## 0.3.4 |
| |
| Released 2020-08-22. |
| |
| ### Changed |
| |
| * Updated `arbitrary` dependency to 0.4.6 |
| |
| -------------------------------------------------------------------------------- |
| |
| ## 0.3.3 |
| |
| Released 2020-07-27. |
| |
| ### Changed |
| |
| * Upgraded libfuzzer to commit |
| [4a4cafa](https://github.com/llvm/llvm-project/commit/4a4cafabc9067fced5890a245b03ef5897ad988b). |
| |
| Notably, this pulls in [the new Entropic engine for |
| libFuzzer](https://mboehme.github.io/paper/FSE20.Entropy.pdf), which should |
| boost fuzzing efficiency when enabled. You can enable Entropic by passing |
| `-entropic=1` to your built fuzz targets (although, note that it is still |
| labeled "experimental"). |
| |
| -------------------------------------------------------------------------------- |
| |
| ## 0.3.2 |
| |
| Released 2020-03-18. |
| |
| ### Changed |
| |
| * Upgraded the `arbitrary` dependency re-export to version 0.4.1. |
| |
| -------------------------------------------------------------------------------- |
| |
| ## 0.3.1 |
| |
| Released 2020-02-27. |
| |
| ### Changed |
| |
| * Fixed a fuzzing performance issue where libfuzzer could unnecessarily spend |
| time exploring all the ways that an `Arbitrary` implementation could fail to |
| construct an instance of itself because the fuzzer provided too few bytes. See |
| https://github.com/rust-fuzz/libfuzzer/issues/59 for details. |
| |
| -------------------------------------------------------------------------------- |
| |
| ## 0.3.0 |
| |
| Released 2019-01-22. |
| |
| ### Changed |
| |
| * Now works with and re-exports `arbitrary` versions 0.4.x. |
| |
| -------------------------------------------------------------------------------- |
| |
| ## 0.2.1 |
| |
| Released 2019-01-16. |
| |
| ### Added |
| |
| * Added support for the `CUSTOM_LIBFUZZER_STD_CXX=<lib>` environment variable |
| during builds that already use a custom libFuzzer checkout with |
| `CUSTOM_LIBFUZZER_PATH`. This allows you to explicitly choose to link LLVM or |
| GNU C++ standard libraries. |
| |
| -------------------------------------------------------------------------------- |
| |
| ## 0.2.0 |
| |
| Released 2020-01-14. |
| |
| ### Changed |
| |
| * Using `arbitrary` 0.3.x now. It is re-exported as `libfuzzer_sys::arbitrary`. |
| |
| ### Added |
| |
| * You can enable support for `#[derive(Arbitrary)]` with the |
| `"arbitrary-derive"` cargo feature. This is a synonym for the `arbitrary` |
| crate's `"derive"` cargo feature. |
| |
| -------------------------------------------------------------------------------- |
| |
| ## 0.1.0 |