Skip to content
Closed
Show file tree
Hide file tree
Changes from 6 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