]> git.bitcoin.ninja Git - rust-lightning/commitdiff
Don't depend on `bitcoinconsensus` in fuzzing 2024-08-fuzz-no-c++
authorMatt Corallo <git@bluematt.me>
Mon, 5 Aug 2024 23:39:37 +0000 (23:39 +0000)
committerMatt Corallo <git@bluematt.me>
Mon, 5 Aug 2024 23:39:37 +0000 (23:39 +0000)
Its a bit annoying to deal with the C++ dependency in some fuzz
build modes, and there's no reason for it, so we skip it here.

lightning/Cargo.toml
lightning/src/ln/functional_test_utils.rs

index cf4a5329476dd2c88e9c5de9cf9fceb7d71ac740..4d17d0215d94d62db0d4ffb943a13bb1dda2fbff 100644 (file)
@@ -17,7 +17,7 @@ rustdoc-args = ["--cfg", "docsrs"]
 
 [features]
 # Internal test utilities exposed to other repo crates
-_test_utils = ["regex", "bitcoin/bitcoinconsensus"]
+_test_utils = ["regex"]
 # Unlog messages superior at targeted level.
 max_level_off = []
 max_level_error = []
@@ -66,5 +66,9 @@ criterion = { version = "0.4", optional = true, default-features = false }
 [target.'cfg(taproot)'.dependencies]
 musig2 = { git = "https://github.com/arik-so/rust-musig2", rev = "739533fc" }
 
+[target.'cfg(all(feature = "_test_utils", not(fuzzing)))'.dependencies.bitcoin]
+version = "0.31.2"
+features = ["bitcoinconsensus"]
+
 [lints]
 workspace = true
index 3af30a5810688c81ae96f76709bfb831a520605a..cad9b767c4e99c0ff93c68cef83a0630e35ed361 100644 (file)
@@ -1538,6 +1538,10 @@ pub fn do_check_spends<F: Fn(&bitcoin::blockdata::transaction::OutPoint) -> Opti
        let min_fee = (tx.weight().to_wu() as u64 + 3) / 4; // One sat per vbyte (ie per weight/4, rounded up)
        // Input amount - output amount = fee, so check that out + min_fee is smaller than input
        assert!(total_value_out + min_fee <= total_value_in);
+
+       // If we're fuzzing, we shouldn't ever get here, but transactions won't validate anyway (as
+       // we're not using valid signatures) so just skip the bitcoinconsensus step
+       #[cfg(not(fuzzing))]
        tx.verify(get_output).unwrap();
 }