From 0190829431bf6842509f0d5204e59296625dfe31 Mon Sep 17 00:00:00 2001 From: sanket1729 Date: Sun, 11 Jul 2021 16:45:08 -0700 Subject: [PATCH] replicate fuzz --- fuzz/fuzz_targets/parse_descriptor.rs | 35 +++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/fuzz/fuzz_targets/parse_descriptor.rs b/fuzz/fuzz_targets/parse_descriptor.rs index d8ae7d0bd..62705c550 100644 --- a/fuzz/fuzz_targets/parse_descriptor.rs +++ b/fuzz/fuzz_targets/parse_descriptor.rs @@ -5,8 +5,10 @@ use std::str::FromStr; fn do_test(data: &[u8]) { let data_str = String::from_utf8_lossy(data); + println!("{}", data_str); if let Ok(dpk) = DescriptorPublicKey::from_str(&data_str) { let output = dpk.to_string(); + println!("{} {}", data_str.to_lowercase(), output.to_lowercase()); assert_eq!(data_str.to_lowercase(), output.to_lowercase()); } } @@ -31,3 +33,36 @@ fn main() { }); } } +#[cfg(test)] +mod tests { + fn extend_vec_from_hex(hex: &str, out: &mut Vec) { + let mut b = 0; + for (idx, c) in hex.as_bytes().iter().enumerate() { + b <<= 4; + match *c { + b'A'...b'F' => b |= c - b'A' + 10, + b'a'...b'f' => b |= c - b'a' + 10, + b'0'...b'9' => b |= c - b'0', + _ => panic!("Bad hex"), + } + if (idx & 1) == 1 { + out.push(b); + b = 0; + } + } + } + + #[test] + fn duplicate_crash2() { + let mut a = Vec::new(); + extend_vec_from_hex("30343935346262626162626262626262626162626262626262623034626262626162626262626262626262626262626262626262626262626262626262626262373562626262626262626262626262626262626262626262626262626262626262626262626262383462626262626242626262626262363735343030326262356262", &mut a); + super::do_test(&a); + } + + #[test] + fn duplicate_crash3() { + let mut a = Vec::new(); + extend_vec_from_hex("30343131393131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131", &mut a); + super::do_test(&a); + } +}