Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions keyvalues-parser/fuzz/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -24,3 +24,10 @@ name = "parse"
path = "fuzz_targets/parse.rs"
test = false
doc = false

[[bin]]
name = "error_invariants"
path = "fuzz_targets/error_invariants.rs"
test = false
doc = false
bench = false
16 changes: 16 additions & 0 deletions keyvalues-parser/fuzz/fuzz_targets/error_invariants.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
#![no_main]

use keyvalues_parser::Vdf;
use libfuzzer_sys::fuzz_target;

fuzz_target!(|text: &str| {
if let Err(err) = Vdf::parse(text) {
// Lots of fiddly logic in displaying that can panic
err.to_string();

// The error snippet should match the original text sliced using the error span
let from_orig = err.index_span().slice(text);
let from_snippet = err.error_snippet();
assert_eq!(from_orig, from_snippet);
}
});
Loading
Loading