fuzz: Exclude too expensive inputs in descriptor_parse targets

Also, fixup iwyu warnings in the util module.

Also, fixup a typo.

The moved part can be reviewed with the git option:
--color-moved=dimmed-zebra
This commit is contained in:
MarcoFalke committed 2026-01-22 21:01:55 +01:00
1 parent 0ffb20dee1
commit fab2f3df4b
4 files changed
+34 -30

No files matched your search

+1 -12
View File
@@ -50,23 +50,12 @@ void initialize_spkm()
MOCKED_DESC_CONVERTER.Init();
}
/**
* Deriving "expensive" descriptors will consume useful fuzz compute. The
* compute is better spent on a smaller subset of descriptors, which still
* covers all real end-user settings.
*/
static bool IsTooExpensive(std::span<const uint8_t> desc)
{
return HasDeepDerivPath(desc) || HasTooManySubFrag(desc) || HasTooManyWrappers(desc);
}
static std::optional<std::pair<WalletDescriptor, FlatSigningProvider>> CreateWalletDescriptor(FuzzedDataProvider& fuzzed_data_provider)
{
const std::string mocked_descriptor{fuzzed_data_provider.ConsumeRandomLengthString()};
if (IsTooExpensive(MakeUCharSpan(mocked_descriptor))) return {};
const auto desc_str{MOCKED_DESC_CONVERTER.GetDescriptor(mocked_descriptor)};
if (!desc_str.has_value()) return std::nullopt;
if (HasTooLargeLeafSize(MakeUCharSpan(*desc_str))) return {};
if (IsTooExpensive(MakeUCharSpan(*desc_str))) return {};
FlatSigningProvider keys;
std::string error;