-
Notifications
You must be signed in to change notification settings - Fork 146
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
Add simple fuzzing #168
Add simple fuzzing #168
Conversation
All right, looks somewhat presentable. |
r? @SimonSapin |
☔ The latest upstream changes (presumably #162) made this pull request unmergeable. Please resolve the merge conflicts. |
I can rebase if someone reviews. :D |
Running the fuzzer returns an error unless I create an |
@mbrubeck Are you using afl? Yes. Please do something like:
|
I'm not sure if I should add this to the |
Yes, having a basic one-byte input checked in to the repo would be good; it'll be one less step for people to get started (or for scripts running fuzzing in CI). |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This looks great, thanks! Just needs a rebase and an AFL input file, as discussed above.
The build failure is because #145 changed the API for |
@mbrubeck Oh. I did a naive rebase, as I don't have access to my normal dev box. I'll fix it later today / tomorrow. Thanks! |
Add infrastructure to automatically run fuzzers in CI, and implement a simple fuzzing test based on triggering all (most) public APIs in a randimized way. As far as I was able to try it catches the previous unsoundness issues in a matter of seconds. This can be tried by changing the `path = "../"` dependency to `version = "=0.6.3"` etc. and running the fuzzer manually. (Note: You'll need to tweak the `Cargo.lock` to allow downloading the yanked versions). Related to servo#124
@mbrubeck Done. :) |
@bors-servo r+ Thanks! |
📌 Commit a3ba738 has been approved by |
Add simple fuzzing Add simple fuzzing Add infrastructure to automatically run fuzzers in CI, and implement a simple fuzzing test based on triggering all (most) public APIs in a randimized way. As far as I was able to try, it catches the previous unsoundness issues in a matter of seconds. This can be tried by changing the `path = "../"` dependency to `version = "=0.6.3"` etc. and running the fuzzer manually. (Note: You'll need to tweak the `Cargo.lock` to allow downloading the yanked versions).
☀️ Test successful - checks-travis |
* [breaking change] Use `MaybeUninit` internally to avoid possible undefined behavior (servo#162, servo#170). * [breaking change] The `drain` method now takes a range argument, just like the standard `Vec::drain` (servo#145). * [breaking change] Remove the `unreachable` function and replace it with the new standard `unreachable_unchecked` function (servo#164). * [breaking change] Use `no_std` by default. This crate depends only on `core` and `alloc` by default. If the optional `write` feature is enabled then it depends on `std` so that `SmallVec<[u8, _]>` can implement the `std::io::Write` trait (servo#173). * Add support for 96-element small vectors, `SmallVec<[T; 96]>` (servo#163). * Iterators now implement `FusedIterator` (servo#172). * Indexing now uses the standard `SliceIndex` trait (servo#166). * Remove the deprecated `VecLike` trait (servo#165). * Use `NonNull` internally (servo#171). * Add automatic fuzz testing and MIRI testing (servo#168, servo#162). * Update syntax and formatting to Rust 2018 standard (servo#174, servo#167).
Version 1.0.0 * Requires Rust 1.36 or later. * [breaking change] Use `MaybeUninit` to avoid possible undefined behavior (#162, #170). * [breaking change] The `drain` method now takes a range argument, just like the standard `Vec::drain` (#145). * [breaking change] Remove the `unreachable` function and replace it with the new standard `unreachable_unchecked` function (#164). * [breaking change] Use `no_std` by default. This crate depends only on `core` and `alloc` by default. If the optional `write` feature is enabled then it depends on `std` so that `SmallVec<[u8;_]>` can implement the `std::io::Write` trait (#173). * Add support for 96-element small vectors, `SmallVec<[T; 96]>` (#163). * Iterators now implement `FusedIterator` (#172). * Indexing now uses the standard `SliceIndex` trait (#166). * Remove the deprecated `VecLike` trait (#165). * Use `NonNull` internally (#171). * Add automatic fuzz testing and MIRI testing (#168, #162). * Update syntax and formatting to Rust 2018 standard (#174, #167).
Add simple fuzzing
Add infrastructure to automatically run fuzzers in CI,
and implement a simple fuzzing test based on triggering all (most)
public APIs in a randimized way.
As far as I was able to try, it catches the previous unsoundness issues
in a matter of seconds. This can be tried by changing the
path = "../"
dependency toversion = "=0.6.3"
etc. and running the fuzzer manually. (Note: You'll needto tweak the
Cargo.lock
to allow downloading the yanked versions).