mirror of
https://github.com/bitcoin/bitcoin.git
synced 2026-01-21 15:50:07 +01:00
fuzz: Exclude too expensive inputs in miniscript_string target
This commit is contained in:
@@ -11,6 +11,7 @@
|
||||
#include <test/fuzz/FuzzedDataProvider.h>
|
||||
#include <test/fuzz/fuzz.h>
|
||||
#include <test/fuzz/util.h>
|
||||
#include <test/fuzz/util/descriptor.h>
|
||||
#include <util/strencodings.h>
|
||||
|
||||
#include <algorithm>
|
||||
@@ -1234,9 +1235,12 @@ FUZZ_TARGET(miniscript_smart, .init = FuzzInitSmart)
|
||||
/* Fuzz tests that test parsing from a string, and roundtripping via string. */
|
||||
FUZZ_TARGET(miniscript_string, .init = FuzzInit)
|
||||
{
|
||||
constexpr auto is_too_expensive{[](std::span<const uint8_t> buf) { return HasTooManySubFrag(buf) || HasTooManyWrappers(buf); }};
|
||||
|
||||
if (buffer.empty()) return;
|
||||
FuzzedDataProvider provider(buffer.data(), buffer.size());
|
||||
auto str = provider.ConsumeBytesAsString(provider.remaining_bytes() - 1);
|
||||
if (is_too_expensive(MakeUCharSpan(str))) return;
|
||||
const ParserContext parser_ctx{(MsCtx)provider.ConsumeBool()};
|
||||
auto parsed = miniscript::FromString(str, parser_ctx);
|
||||
if (!parsed) return;
|
||||
|
||||
Reference in New Issue
Block a user