From 7c8b95c2f17668f1da9974bec6e0d06bb08bf1bd Mon Sep 17 00:00:00 2001 From: Bruno Garcia Date: Mon, 24 Feb 2025 18:33:30 -0300 Subject: [PATCH] fuzz: add target for tapscript parsing from script --- .github/workflows/cron-daily-fuzz.yml | 1 + fuzz/Cargo.toml | 4 ++++ .../roundtrip_miniscript_script_tap.rs | 24 +++++++++++++++++++ 3 files changed, 29 insertions(+) create mode 100644 fuzz/fuzz_targets/roundtrip_miniscript_script_tap.rs diff --git a/.github/workflows/cron-daily-fuzz.yml b/.github/workflows/cron-daily-fuzz.yml index 5c9f259be..5fc5bded5 100644 --- a/.github/workflows/cron-daily-fuzz.yml +++ b/.github/workflows/cron-daily-fuzz.yml @@ -26,6 +26,7 @@ regression_descriptor_parse, roundtrip_concrete, roundtrip_descriptor, roundtrip_miniscript_script, +roundtrip_miniscript_script_tap, roundtrip_miniscript_str, roundtrip_semantic, ] diff --git a/fuzz/Cargo.toml b/fuzz/Cargo.toml index 5ef91d949..c9c593fac 100644 --- a/fuzz/Cargo.toml +++ b/fuzz/Cargo.toml @@ -54,6 +54,10 @@ path = "fuzz_targets/roundtrip_descriptor.rs" name = "roundtrip_miniscript_script" path = "fuzz_targets/roundtrip_miniscript_script.rs" +[[bin]] +name = "roundtrip_miniscript_script_tap" +path = "fuzz_targets/roundtrip_miniscript_script_tap.rs" + [[bin]] name = "roundtrip_miniscript_str" path = "fuzz_targets/roundtrip_miniscript_str.rs" diff --git a/fuzz/fuzz_targets/roundtrip_miniscript_script_tap.rs b/fuzz/fuzz_targets/roundtrip_miniscript_script_tap.rs new file mode 100644 index 000000000..c372547bc --- /dev/null +++ b/fuzz/fuzz_targets/roundtrip_miniscript_script_tap.rs @@ -0,0 +1,24 @@ +#![allow(unexpected_cfgs)] + +use honggfuzz::fuzz; +use miniscript::bitcoin::blockdata::script; +use miniscript::{Miniscript, Tap}; + +fn do_test(data: &[u8]) { + // Try round-tripping as a script + let script = script::Script::from_bytes(data); + + if let Ok(pt) = Miniscript::::parse(script) { + let output = pt.encode(); + assert_eq!(pt.script_size(), output.len()); + assert_eq!(&output, script); + } +} + +fn main() { + loop { + fuzz!(|data| { + do_test(data); + }); + } +}