235 lines
5.7 KiB
Markdown
235 lines
5.7 KiB
Markdown
## 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
|