// Copyright (c) 2020 The Bitcoin Core developers // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. #include #include #include #include #include #include #include void test_one_input(const std::vector& buffer) { FuzzedDataProvider fuzzed_data_provider(buffer.data(), buffer.size()); const unsigned int max_size = fuzzed_data_provider.ConsumeIntegralInRange(0, 1000); // Divide by 2 to avoid signed integer overflow in .median() const int64_t initial_value = fuzzed_data_provider.ConsumeIntegral() / 2; CMedianFilter median_filter{max_size, initial_value}; while (fuzzed_data_provider.remaining_bytes() > 0) { (void)median_filter.median(); assert(median_filter.size() > 0); assert(static_cast(median_filter.size()) == median_filter.sorted().size()); assert(static_cast(median_filter.size()) <= max_size || max_size == 0); // Divide by 2 to avoid signed integer overflow in .median() median_filter.input(fuzzed_data_provider.ConsumeIntegral() / 2); } }