MCPcopy Create free account
hub / github.com/ElementsProject/elements / FUZZ_TARGET

Function FUZZ_TARGET

src/test/fuzz/script_bitcoin_consensus.cpp:15–37  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

13#include <vector>
14
15FUZZ_TARGET(script_bitcoin_consensus)
16{
17 FuzzedDataProvider fuzzed_data_provider(buffer.data(), buffer.size());
18 const std::vector<uint8_t> random_bytes_1 = ConsumeRandomLengthByteVector(fuzzed_data_provider);
19 const std::vector<uint8_t> random_bytes_2 = ConsumeRandomLengthByteVector(fuzzed_data_provider);
20 const uint256 random_hash = ConsumeUInt256(fuzzed_data_provider);
21
22 const std::optional<CConfidentialValue> money = ConsumeDeserializable<CConfidentialValue>(fuzzed_data_provider);
23 bitcoinconsensus_error err;
24 bitcoinconsensus_error* err_p = fuzzed_data_provider.ConsumeBool() ? &err : nullptr;
25 const unsigned int n_in = fuzzed_data_provider.ConsumeIntegral<unsigned int>();
26 const unsigned int flags = fuzzed_data_provider.ConsumeIntegral<unsigned int>();
27 assert(bitcoinconsensus_version() == BITCOINCONSENSUS_API_VER);
28 if ((flags & SCRIPT_VERIFY_WITNESS) != 0 && (flags & SCRIPT_VERIFY_P2SH) == 0) {
29 return;
30 }
31 (void)bitcoinconsensus_verify_script(random_hash.begin() ,random_bytes_1.data(), random_bytes_1.size(), random_bytes_2.data(), random_bytes_2.size(), n_in, flags, err_p);
32 if (money) {
33 CDataStream data_stream(SER_NETWORK, PROTOCOL_VERSION);
34 data_stream << *money;
35 (void)bitcoinconsensus_verify_script_with_amount(random_hash.begin(), random_bytes_1.data(), random_bytes_1.size(), (unsigned char*) data_stream.data(), data_stream.size(), random_bytes_2.data(), random_bytes_2.size(), n_in, flags, err_p);
36 }
37}

Callers

nothing calls this directly

Calls 9

ConsumeUInt256Function · 0.85
bitcoinconsensus_versionFunction · 0.85
ConsumeBoolMethod · 0.80
dataMethod · 0.45
sizeMethod · 0.45
beginMethod · 0.45

Tested by

no test coverage detected