Skip to content

Commit 641dddf

Browse files
committed
fuzz: create ConsumeCoins
1 parent 2e1833c commit 641dddf

File tree

3 files changed

+21
-12
lines changed

3 files changed

+21
-12
lines changed

src/test/fuzz/script_sign.cpp

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -125,18 +125,7 @@ FUZZ_TARGET(script_sign, .init = initialize_script_sign)
125125
}
126126
(void)signature_creator.CreateSig(provider, vch_sig, address, ConsumeScript(fuzzed_data_provider), fuzzed_data_provider.PickValueInArray({SigVersion::BASE, SigVersion::WITNESS_V0}));
127127
}
128-
std::map<COutPoint, Coin> coins;
129-
LIMITED_WHILE(fuzzed_data_provider.ConsumeBool(), 10000) {
130-
const std::optional<COutPoint> outpoint = ConsumeDeserializable<COutPoint>(fuzzed_data_provider);
131-
if (!outpoint) {
132-
break;
133-
}
134-
const std::optional<Coin> coin = ConsumeDeserializable<Coin>(fuzzed_data_provider);
135-
if (!coin) {
136-
break;
137-
}
138-
coins[*outpoint] = *coin;
139-
}
128+
std::map<COutPoint, Coin> coins{ConsumeCoins(fuzzed_data_provider)};
140129
std::map<int, bilingual_str> input_errors;
141130
(void)SignTransaction(sign_transaction_tx_to, &provider, coins, fuzzed_data_provider.ConsumeIntegral<int>(), input_errors);
142131
}

src/test/fuzz/util.cpp

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -164,6 +164,24 @@ uint32_t ConsumeSequence(FuzzedDataProvider& fuzzed_data_provider) noexcept
164164
fuzzed_data_provider.ConsumeIntegral<uint32_t>();
165165
}
166166

167+
std::map<COutPoint, Coin> ConsumeCoins(FuzzedDataProvider& fuzzed_data_provider) noexcept
168+
{
169+
std::map<COutPoint, Coin> coins;
170+
LIMITED_WHILE(fuzzed_data_provider.ConsumeBool(), 10000) {
171+
const std::optional<COutPoint> outpoint{ConsumeDeserializable<COutPoint>(fuzzed_data_provider)};
172+
if (!outpoint) {
173+
break;
174+
}
175+
const std::optional<Coin> coin{ConsumeDeserializable<Coin>(fuzzed_data_provider)};
176+
if (!coin) {
177+
break;
178+
}
179+
coins[*outpoint] = *coin;
180+
}
181+
182+
return coins;
183+
}
184+
167185
CTxDestination ConsumeTxDestination(FuzzedDataProvider& fuzzed_data_provider) noexcept
168186
{
169187
CTxDestination tx_destination;

src/test/fuzz/util.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -181,6 +181,8 @@ template <typename WeakEnumType, size_t size>
181181
return UintToArith256(ConsumeUInt256(fuzzed_data_provider));
182182
}
183183

184+
[[nodiscard]] std::map<COutPoint, Coin> ConsumeCoins(FuzzedDataProvider& fuzzed_data_provider) noexcept;
185+
184186
[[nodiscard]] CTxDestination ConsumeTxDestination(FuzzedDataProvider& fuzzed_data_provider) noexcept;
185187

186188
[[nodiscard]] CKey ConsumePrivateKey(FuzzedDataProvider& fuzzed_data_provider, std::optional<bool> compressed = std::nullopt) noexcept;

0 commit comments

Comments
 (0)