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

Function FUZZ_TARGET_INIT

src/test/fuzz/integer.cpp:46–264  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

44}
45
46FUZZ_TARGET_INIT(integer, initialize_integer)
47{
48 if (buffer.size() < sizeof(uint256) + sizeof(uint160)) {
49 return;
50 }
51 FuzzedDataProvider fuzzed_data_provider(buffer.data(), buffer.size());
52 const uint256 u256(fuzzed_data_provider.ConsumeBytes<unsigned char>(sizeof(uint256)));
53 const uint160 u160(fuzzed_data_provider.ConsumeBytes<unsigned char>(sizeof(uint160)));
54 const uint64_t u64 = fuzzed_data_provider.ConsumeIntegral<uint64_t>();
55 const int64_t i64 = fuzzed_data_provider.ConsumeIntegral<int64_t>();
56 const uint32_t u32 = fuzzed_data_provider.ConsumeIntegral<uint32_t>();
57 const int32_t i32 = fuzzed_data_provider.ConsumeIntegral<int32_t>();
58 const uint16_t u16 = fuzzed_data_provider.ConsumeIntegral<uint16_t>();
59 const int16_t i16 = fuzzed_data_provider.ConsumeIntegral<int16_t>();
60 const uint8_t u8 = fuzzed_data_provider.ConsumeIntegral<uint8_t>();
61 const int8_t i8 = fuzzed_data_provider.ConsumeIntegral<int8_t>();
62 // We cannot assume a specific value of std::is_signed<char>::value:
63 // ConsumeIntegral<char>() instead of casting from {u,}int8_t.
64 const char ch = fuzzed_data_provider.ConsumeIntegral<char>();
65 const bool b = fuzzed_data_provider.ConsumeBool();
66
67 const Consensus::Params& consensus_params = Params().GetConsensus();
68 (void)CheckProofOfWork(u256, u32, consensus_params);
69 if (u64 <= MAX_MONEY) {
70 const uint64_t compressed_money_amount = CompressAmount(u64);
71 assert(u64 == DecompressAmount(compressed_money_amount));
72 static const uint64_t compressed_money_amount_max = CompressAmount(MAX_MONEY - 1);
73 assert(compressed_money_amount <= compressed_money_amount_max);
74 } else {
75 (void)CompressAmount(u64);
76 }
77 static const uint256 u256_min(uint256S("0000000000000000000000000000000000000000000000000000000000000000"));
78 static const uint256 u256_max(uint256S("ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"));
79 const std::vector<uint256> v256{u256, u256_min, u256_max};
80 (void)ComputeMerkleRoot(v256);
81 (void)CountBits(u64);
82 (void)DecompressAmount(u64);
83 {
84 if (std::optional<CAmount> parsed = ParseMoney(FormatMoney(i64))) {
85 assert(parsed.value() == i64);
86 }
87 }
88 (void)GetSizeOfCompactSize(u64);
89 (void)GetSpecialScriptSize(u32);
90 if (!MultiplicationOverflow(i64, static_cast<int64_t>(::nBytesPerSigOp)) && !AdditionOverflow(i64 * ::nBytesPerSigOp, static_cast<int64_t>(4))) {
91 (void)GetVirtualTransactionSize(i64, i64);
92 }
93 if (!MultiplicationOverflow(i64, static_cast<int64_t>(u32)) && !AdditionOverflow(i64, static_cast<int64_t>(4)) && !AdditionOverflow(i64 * u32, static_cast<int64_t>(4))) {
94 (void)GetVirtualTransactionSize(i64, i64, u32);
95 }
96 (void)HexDigit(ch);
97 (void)MoneyRange(i64);
98 (void)ToString(i64);
99 (void)IsDigit(ch);
100 (void)IsSpace(ch);
101 (void)IsSwitchChar(ch);
102 (void)memusage::DynamicUsage(ch);
103 (void)memusage::DynamicUsage(i16);

Callers

nothing calls this directly

Calls 15

CheckProofOfWorkFunction · 0.85
CompressAmountFunction · 0.85
DecompressAmountFunction · 0.85
uint256SFunction · 0.85
ComputeMerkleRootFunction · 0.85
ParseMoneyFunction · 0.85
FormatMoneyFunction · 0.85
GetSizeOfCompactSizeFunction · 0.85
GetSpecialScriptSizeFunction · 0.85
MultiplicationOverflowFunction · 0.85
AdditionOverflowFunction · 0.85
HexDigitFunction · 0.85

Tested by

no test coverage detected