1515#include < test/util/script.h>
1616#include < test/util/setup_common.h>
1717#include < test/util/txmempool.h>
18+ #include < util/check.h>
1819#include < util/rbf.h>
20+ #include < util/translation.h>
1921#include < validation.h>
2022#include < validationinterface.h>
2123
@@ -116,7 +118,7 @@ void MockTime(FuzzedDataProvider& fuzzed_data_provider, const Chainstate& chains
116118 SetMockTime (time);
117119}
118120
119- CTxMemPool MakeMempool (FuzzedDataProvider& fuzzed_data_provider, const NodeContext& node)
121+ std::unique_ptr< CTxMemPool> MakeMempool (FuzzedDataProvider& fuzzed_data_provider, const NodeContext& node)
120122{
121123 // Take the default options for tests...
122124 CTxMemPool::Options mempool_opts{MemPoolOptionsForTest (node)};
@@ -126,7 +128,12 @@ CTxMemPool MakeMempool(FuzzedDataProvider& fuzzed_data_provider, const NodeConte
126128 mempool_opts.require_standard = fuzzed_data_provider.ConsumeBool ();
127129
128130 // ...and construct a CTxMemPool from it
129- return CTxMemPool{mempool_opts};
131+ bilingual_str error;
132+ auto mempool{std::make_unique<CTxMemPool>(std::move (mempool_opts), error)};
133+ // ... ignore the error since it might be beneficial to fuzz even when the
134+ // mempool size is unreasonably small
135+ Assert (error.empty () || error.original .starts_with (" -maxmempool must be at least " ));
136+ return mempool;
130137}
131138
132139void CheckATMPInvariants (const MempoolAcceptResult& res, bool txid_in_mempool, bool wtxid_in_mempool)
@@ -198,8 +205,8 @@ FUZZ_TARGET(tx_pool_standard, .init = initialize_tx_pool)
198205 constexpr CAmount SUPPLY_TOTAL{COINBASE_MATURITY * 50 * COIN};
199206
200207 SetMempoolConstraints (*node.args , fuzzed_data_provider);
201- CTxMemPool tx_pool_{MakeMempool (fuzzed_data_provider, node)};
202- MockedTxPool& tx_pool = *static_cast <MockedTxPool*>(& tx_pool_);
208+ auto tx_pool_{MakeMempool (fuzzed_data_provider, node)};
209+ MockedTxPool& tx_pool = *static_cast <MockedTxPool*>(tx_pool_. get () );
203210
204211 chainstate.SetMempool (&tx_pool);
205212
@@ -376,8 +383,8 @@ FUZZ_TARGET(tx_pool, .init = initialize_tx_pool)
376383 }
377384
378385 SetMempoolConstraints (*node.args , fuzzed_data_provider);
379- CTxMemPool tx_pool_{MakeMempool (fuzzed_data_provider, node)};
380- MockedTxPool& tx_pool = *static_cast <MockedTxPool*>(& tx_pool_);
386+ auto tx_pool_{MakeMempool (fuzzed_data_provider, node)};
387+ MockedTxPool& tx_pool = *static_cast <MockedTxPool*>(tx_pool_. get () );
381388
382389 chainstate.SetMempool (&tx_pool);
383390
0 commit comments