Skip to content

Commit ff8e2fc

Browse files
brunoergdarosior
andcommitted
fuzz: add coverage for bitcoinconsensus_verify_script_with_spent_outputs
Co-authored-by: Antonie Poinsot <darosior@protonmail.com>
1 parent c5f2a75 commit ff8e2fc

File tree

1 file changed

+19
-0
lines changed

1 file changed

+19
-0
lines changed

src/test/fuzz/script_bitcoin_consensus.cpp

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,4 +28,23 @@ FUZZ_TARGET(script_bitcoin_consensus)
2828
}
2929
(void)bitcoinconsensus_verify_script(random_bytes_1.data(), random_bytes_1.size(), random_bytes_2.data(), random_bytes_2.size(), n_in, flags, err_p);
3030
(void)bitcoinconsensus_verify_script_with_amount(random_bytes_1.data(), random_bytes_1.size(), money, random_bytes_2.data(), random_bytes_2.size(), n_in, flags, err_p);
31+
32+
std::vector<UTXO> spent_outputs;
33+
std::vector<std::vector<unsigned char>> spent_spks;
34+
if (n_in <= 24386) {
35+
spent_outputs.reserve(n_in);
36+
spent_spks.reserve(n_in);
37+
for (size_t i = 0; i < n_in; ++i) {
38+
spent_spks.push_back(ConsumeRandomLengthByteVector(fuzzed_data_provider));
39+
const CAmount value{ConsumeMoney(fuzzed_data_provider)};
40+
const auto spk_size{static_cast<unsigned>(spent_spks.back().size())};
41+
spent_outputs.push_back({.scriptPubKey = spent_spks.back().data(), .scriptPubKeySize = spk_size, .value = value});
42+
}
43+
}
44+
45+
const auto spent_outs_size{static_cast<unsigned>(spent_outputs.size())};
46+
47+
(void)bitcoinconsensus_verify_script_with_spent_outputs(
48+
random_bytes_1.data(), random_bytes_1.size(), money, random_bytes_2.data(), random_bytes_2.size(),
49+
spent_outputs.data(), spent_outs_size, n_in, flags, err_p);
3150
}

0 commit comments

Comments
 (0)