mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-02-10 10:52:31 -05:00
fuzz: Limit max insertions in timedata fuzz test
This commit is contained in:
parent
d2f6d2976f
commit
fa95555a49
1 changed files with 3 additions and 1 deletions
|
@ -15,10 +15,12 @@ FUZZ_TARGET(timedata)
|
||||||
{
|
{
|
||||||
FuzzedDataProvider fuzzed_data_provider(buffer.data(), buffer.size());
|
FuzzedDataProvider fuzzed_data_provider(buffer.data(), buffer.size());
|
||||||
const unsigned int max_size = fuzzed_data_provider.ConsumeIntegralInRange<unsigned int>(0, 1000);
|
const unsigned int max_size = fuzzed_data_provider.ConsumeIntegralInRange<unsigned int>(0, 1000);
|
||||||
|
// A max_size of 0 implies no limit, so cap the max number of insertions to avoid timeouts
|
||||||
|
auto max_to_insert = fuzzed_data_provider.ConsumeIntegralInRange<int>(0, 4000);
|
||||||
// Divide by 2 to avoid signed integer overflow in .median()
|
// Divide by 2 to avoid signed integer overflow in .median()
|
||||||
const int64_t initial_value = fuzzed_data_provider.ConsumeIntegral<int64_t>() / 2;
|
const int64_t initial_value = fuzzed_data_provider.ConsumeIntegral<int64_t>() / 2;
|
||||||
CMedianFilter<int64_t> median_filter{max_size, initial_value};
|
CMedianFilter<int64_t> median_filter{max_size, initial_value};
|
||||||
while (fuzzed_data_provider.remaining_bytes() > 0) {
|
while (fuzzed_data_provider.remaining_bytes() > 0 && --max_to_insert >= 0) {
|
||||||
(void)median_filter.median();
|
(void)median_filter.median();
|
||||||
assert(median_filter.size() > 0);
|
assert(median_filter.size() > 0);
|
||||||
assert(static_cast<size_t>(median_filter.size()) == median_filter.sorted().size());
|
assert(static_cast<size_t>(median_filter.size()) == median_filter.sorted().size());
|
||||||
|
|
Loading…
Add table
Reference in a new issue