Skip to content

Commit edf2fe6

Browse files
committed
fuzz: add logging support to the fuzzer
This makes it a little easier to introspect what the regex crate is doing. Just pass RUST_LOG=debug to get a general sense of things, and RUST_LOG=trace to get a lot more output.
1 parent 793e938 commit edf2fe6

9 files changed

+25
-2
lines changed

fuzz/Cargo.toml

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,18 @@ cargo-fuzz = true
1616
[dependencies]
1717
arbitrary = { version = "1.3.0", features = ["derive"] }
1818
libfuzzer-sys = { version = "0.4.1", features = ["arbitrary-derive"] }
19-
regex = { path = ".." }
20-
regex-automata = { path = "../regex-automata" }
19+
regex = { path = "..", features = ["logging"] }
20+
regex-automata = { path = "../regex-automata", features = ["logging"] }
2121
regex-lite = { path = "../regex-lite" }
2222
regex-syntax = { path = "../regex-syntax", features = ["arbitrary"] }
2323

24+
[dependencies.env_logger]
25+
# Note that this is currently using an older version because of the dependency
26+
# tree explosion that happened in 0.10.
27+
version = "0.9.3"
28+
default-features = false
29+
features = ["atty", "humantime", "termcolor"]
30+
2431
# Prevent this from interfering with workspaces
2532
[workspace]
2633
members = ["."]

fuzz/fuzz_targets/ast_fuzz_match.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@ impl std::fmt::Debug for FuzzData {
2020
}
2121

2222
fuzz_target!(|data: FuzzData| {
23+
env_logger::init();
24+
2325
let pattern = format!("{}", data.ast);
2426
let Ok(re) = RegexBuilder::new(&pattern).size_limit(1<<20).build() else {
2527
return

fuzz/fuzz_targets/ast_fuzz_match_bytes.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@ impl std::fmt::Debug for FuzzData {
2121
}
2222

2323
fuzz_target!(|data: FuzzData| {
24+
env_logger::init();
25+
2426
let pattern = format!("{}", data.ast);
2527
let Ok(re) = RegexBuilder::new(&pattern).size_limit(1<<20).build() else {
2628
return

fuzz/fuzz_targets/ast_fuzz_regex.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@ impl std::fmt::Debug for FuzzData {
1818
}
1919

2020
fuzz_target!(|data: FuzzData| {
21+
env_logger::init();
22+
2123
let pattern = format!("{}", data.ast);
2224
RegexBuilder::new(&pattern).size_limit(1 << 20).build().ok();
2325
});

fuzz/fuzz_targets/ast_roundtrip.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,8 @@ impl Visitor for VerboseVisitor {
4747
}
4848

4949
fuzz_target!(|data: FuzzData| -> Corpus {
50+
env_logger::init();
51+
5052
let pattern = format!("{}", data.ast);
5153
let Ok(ast) = Parser::new().parse(&pattern) else {
5254
return Corpus::Keep;

fuzz/fuzz_targets/fuzz_regex_automata_deserialize_dense_dfa.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@ fuzz_target!(|data: &[u8]| {
99
fn run(given_data: &[u8]) -> Option<()> {
1010
use regex_automata::dfa::Automaton;
1111

12+
env_logger::init();
13+
1214
if given_data.len() < 2 {
1315
return None;
1416
}

fuzz/fuzz_targets/fuzz_regex_automata_deserialize_sparse_dfa.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@ fuzz_target!(|data: &[u8]| {
99
fn run(given_data: &[u8]) -> Option<()> {
1010
use regex_automata::dfa::Automaton;
1111

12+
env_logger::init();
13+
1214
if given_data.len() < 2 {
1315
return None;
1416
}

fuzz/fuzz_targets/fuzz_regex_lite_match.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,8 @@ re.is_match({haystack:?});
4848
}
4949

5050
fuzz_target!(|case: FuzzCase| {
51+
env_logger::init();
52+
5153
let Ok(re) = regex_lite::RegexBuilder::new(case.pattern)
5254
.case_insensitive(case.case_insensitive)
5355
.multi_line(case.multi_line)

fuzz/fuzz_targets/fuzz_regex_match.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,8 @@ re.is_match({haystack:?});
5151
}
5252

5353
fuzz_target!(|case: FuzzCase| {
54+
env_logger::init();
55+
5456
let Ok(re) = regex::RegexBuilder::new(case.pattern)
5557
.case_insensitive(case.case_insensitive)
5658
.multi_line(case.multi_line)

0 commit comments

Comments
 (0)