Coverage Report

Created: 2026-07-30 14:31

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/root/bitcoin/src/test/fuzz/poolresource.cpp
Line
Count
Source
1
// Copyright (c) 2022-present The Bitcoin Core developers
2
// Distributed under the MIT software license, see the accompanying
3
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
4
5
#include <random.h>
6
#include <span.h>
7
#include <support/allocators/pool.h>
8
#include <test/fuzz/FuzzedDataProvider.h>
9
#include <test/fuzz/fuzz.h>
10
#include <test/fuzz/util.h>
11
#include <test/util/poolresourcetester.h>
12
#include <util/byte_units.h>
13
14
#include <cstdint>
15
#include <tuple>
16
#include <vector>
17
18
namespace {
19
20
template <std::size_t MAX_BLOCK_SIZE_BYTES, std::size_t ALIGN_BYTES>
21
class PoolResourceFuzzer
22
{
23
    FuzzedDataProvider& m_provider;
24
    PoolResource<MAX_BLOCK_SIZE_BYTES, ALIGN_BYTES> m_test_resource;
25
    uint64_t m_sequence{0};
26
    size_t m_total_allocated{};
27
28
    struct Entry {
29
        std::span<std::byte> span;
30
        size_t alignment;
31
        uint64_t seed;
32
33
0
        Entry(std::span<std::byte> s, size_t a, uint64_t se) : span(s), alignment(a), seed(se) {}
Unexecuted instantiation: poolresource.cpp:_ZN12_GLOBAL__N_118PoolResourceFuzzerILm128ELm1EE5EntryC2ESt4spanISt4byteLm18446744073709551615EEmm
Unexecuted instantiation: poolresource.cpp:_ZN12_GLOBAL__N_118PoolResourceFuzzerILm128ELm2EE5EntryC2ESt4spanISt4byteLm18446744073709551615EEmm
Unexecuted instantiation: poolresource.cpp:_ZN12_GLOBAL__N_118PoolResourceFuzzerILm128ELm4EE5EntryC2ESt4spanISt4byteLm18446744073709551615EEmm
Unexecuted instantiation: poolresource.cpp:_ZN12_GLOBAL__N_118PoolResourceFuzzerILm128ELm8EE5EntryC2ESt4spanISt4byteLm18446744073709551615EEmm
Unexecuted instantiation: poolresource.cpp:_ZN12_GLOBAL__N_118PoolResourceFuzzerILm8ELm8EE5EntryC2ESt4spanISt4byteLm18446744073709551615EEmm
Unexecuted instantiation: poolresource.cpp:_ZN12_GLOBAL__N_118PoolResourceFuzzerILm16ELm16EE5EntryC2ESt4spanISt4byteLm18446744073709551615EEmm
Unexecuted instantiation: poolresource.cpp:_ZN12_GLOBAL__N_118PoolResourceFuzzerILm256ELm16EE5EntryC2ESt4spanISt4byteLm18446744073709551615EEmm
Unexecuted instantiation: poolresource.cpp:_ZN12_GLOBAL__N_118PoolResourceFuzzerILm256ELm64EE5EntryC2ESt4spanISt4byteLm18446744073709551615EEmm
34
    };
35
36
    std::vector<Entry> m_entries;
37
38
public:
39
    PoolResourceFuzzer(FuzzedDataProvider& provider)
40
0
        : m_provider{provider},
41
0
          m_test_resource{provider.ConsumeIntegralInRange<size_t>(MAX_BLOCK_SIZE_BYTES, 262144)}
42
0
    {
43
0
    }
Unexecuted instantiation: poolresource.cpp:_ZN12_GLOBAL__N_118PoolResourceFuzzerILm128ELm1EEC2ER18FuzzedDataProvider
Unexecuted instantiation: poolresource.cpp:_ZN12_GLOBAL__N_118PoolResourceFuzzerILm128ELm2EEC2ER18FuzzedDataProvider
Unexecuted instantiation: poolresource.cpp:_ZN12_GLOBAL__N_118PoolResourceFuzzerILm128ELm4EEC2ER18FuzzedDataProvider
Unexecuted instantiation: poolresource.cpp:_ZN12_GLOBAL__N_118PoolResourceFuzzerILm128ELm8EEC2ER18FuzzedDataProvider
Unexecuted instantiation: poolresource.cpp:_ZN12_GLOBAL__N_118PoolResourceFuzzerILm8ELm8EEC2ER18FuzzedDataProvider
Unexecuted instantiation: poolresource.cpp:_ZN12_GLOBAL__N_118PoolResourceFuzzerILm16ELm16EEC2ER18FuzzedDataProvider
Unexecuted instantiation: poolresource.cpp:_ZN12_GLOBAL__N_118PoolResourceFuzzerILm256ELm16EEC2ER18FuzzedDataProvider
Unexecuted instantiation: poolresource.cpp:_ZN12_GLOBAL__N_118PoolResourceFuzzerILm256ELm64EEC2ER18FuzzedDataProvider
44
45
    void Allocate(size_t size, size_t alignment)
46
0
    {
47
0
        assert(size > 0);                           // Must allocate at least 1 byte.
  Branch (47:9): [True: 0, False: 0]
  Branch (47:9): [True: 0, False: 0]
  Branch (47:9): [True: 0, False: 0]
  Branch (47:9): [True: 0, False: 0]
  Branch (47:9): [True: 0, False: 0]
  Branch (47:9): [True: 0, False: 0]
  Branch (47:9): [True: 0, False: 0]
  Branch (47:9): [True: 0, False: 0]
48
0
        assert(alignment > 0);                      // Alignment must be at least 1.
  Branch (48:9): [True: 0, False: 0]
  Branch (48:9): [True: 0, False: 0]
  Branch (48:9): [True: 0, False: 0]
  Branch (48:9): [True: 0, False: 0]
  Branch (48:9): [True: 0, False: 0]
  Branch (48:9): [True: 0, False: 0]
  Branch (48:9): [True: 0, False: 0]
  Branch (48:9): [True: 0, False: 0]
49
0
        assert((alignment & (alignment - 1)) == 0); // Alignment must be power of 2.
  Branch (49:9): [True: 0, False: 0]
  Branch (49:9): [True: 0, False: 0]
  Branch (49:9): [True: 0, False: 0]
  Branch (49:9): [True: 0, False: 0]
  Branch (49:9): [True: 0, False: 0]
  Branch (49:9): [True: 0, False: 0]
  Branch (49:9): [True: 0, False: 0]
  Branch (49:9): [True: 0, False: 0]
50
0
        assert((size & (alignment - 1)) == 0);      // Size must be a multiple of alignment.
  Branch (50:9): [True: 0, False: 0]
  Branch (50:9): [True: 0, False: 0]
  Branch (50:9): [True: 0, False: 0]
  Branch (50:9): [True: 0, False: 0]
  Branch (50:9): [True: 0, False: 0]
  Branch (50:9): [True: 0, False: 0]
  Branch (50:9): [True: 0, False: 0]
  Branch (50:9): [True: 0, False: 0]
51
52
0
        auto span = std::span(static_cast<std::byte*>(m_test_resource.Allocate(size, alignment)), size);
53
0
        m_total_allocated += size;
54
55
0
        auto ptr_val = reinterpret_cast<std::uintptr_t>(span.data());
56
0
        assert((ptr_val & (alignment - 1)) == 0);
  Branch (56:9): [True: 0, False: 0]
  Branch (56:9): [True: 0, False: 0]
  Branch (56:9): [True: 0, False: 0]
  Branch (56:9): [True: 0, False: 0]
  Branch (56:9): [True: 0, False: 0]
  Branch (56:9): [True: 0, False: 0]
  Branch (56:9): [True: 0, False: 0]
  Branch (56:9): [True: 0, False: 0]
57
58
0
        uint64_t seed = m_sequence++;
59
0
        RandomContentFill(m_entries.emplace_back(span, alignment, seed));
60
0
    }
Unexecuted instantiation: poolresource.cpp:_ZN12_GLOBAL__N_118PoolResourceFuzzerILm128ELm1EE8AllocateEmm
Unexecuted instantiation: poolresource.cpp:_ZN12_GLOBAL__N_118PoolResourceFuzzerILm128ELm2EE8AllocateEmm
Unexecuted instantiation: poolresource.cpp:_ZN12_GLOBAL__N_118PoolResourceFuzzerILm128ELm4EE8AllocateEmm
Unexecuted instantiation: poolresource.cpp:_ZN12_GLOBAL__N_118PoolResourceFuzzerILm128ELm8EE8AllocateEmm
Unexecuted instantiation: poolresource.cpp:_ZN12_GLOBAL__N_118PoolResourceFuzzerILm8ELm8EE8AllocateEmm
Unexecuted instantiation: poolresource.cpp:_ZN12_GLOBAL__N_118PoolResourceFuzzerILm16ELm16EE8AllocateEmm
Unexecuted instantiation: poolresource.cpp:_ZN12_GLOBAL__N_118PoolResourceFuzzerILm256ELm16EE8AllocateEmm
Unexecuted instantiation: poolresource.cpp:_ZN12_GLOBAL__N_118PoolResourceFuzzerILm256ELm64EE8AllocateEmm
61
62
    void
63
    Allocate()
64
0
    {
65
0
        if (m_total_allocated > 16_MiB) return;
  Branch (65:13): [True: 0, False: 0]
  Branch (65:13): [True: 0, False: 0]
  Branch (65:13): [True: 0, False: 0]
  Branch (65:13): [True: 0, False: 0]
  Branch (65:13): [True: 0, False: 0]
  Branch (65:13): [True: 0, False: 0]
  Branch (65:13): [True: 0, False: 0]
  Branch (65:13): [True: 0, False: 0]
66
0
        size_t alignment_bits = m_provider.ConsumeIntegralInRange<size_t>(0, 7);
67
0
        size_t alignment = size_t{1} << alignment_bits;
68
0
        size_t size_bits = m_provider.ConsumeIntegralInRange<size_t>(0, 16 - alignment_bits);
69
0
        size_t size = m_provider.ConsumeIntegralInRange<size_t>(size_t{1} << size_bits, (size_t{1} << (size_bits + 1)) - 1U) << alignment_bits;
70
0
        Allocate(size, alignment);
71
0
    }
Unexecuted instantiation: poolresource.cpp:_ZN12_GLOBAL__N_118PoolResourceFuzzerILm128ELm1EE8AllocateEv
Unexecuted instantiation: poolresource.cpp:_ZN12_GLOBAL__N_118PoolResourceFuzzerILm128ELm2EE8AllocateEv
Unexecuted instantiation: poolresource.cpp:_ZN12_GLOBAL__N_118PoolResourceFuzzerILm128ELm4EE8AllocateEv
Unexecuted instantiation: poolresource.cpp:_ZN12_GLOBAL__N_118PoolResourceFuzzerILm128ELm8EE8AllocateEv
Unexecuted instantiation: poolresource.cpp:_ZN12_GLOBAL__N_118PoolResourceFuzzerILm8ELm8EE8AllocateEv
Unexecuted instantiation: poolresource.cpp:_ZN12_GLOBAL__N_118PoolResourceFuzzerILm16ELm16EE8AllocateEv
Unexecuted instantiation: poolresource.cpp:_ZN12_GLOBAL__N_118PoolResourceFuzzerILm256ELm16EE8AllocateEv
Unexecuted instantiation: poolresource.cpp:_ZN12_GLOBAL__N_118PoolResourceFuzzerILm256ELm64EE8AllocateEv
72
73
    void RandomContentFill(Entry& entry)
74
0
    {
75
0
        InsecureRandomContext(entry.seed).fillrand(entry.span);
76
0
    }
Unexecuted instantiation: poolresource.cpp:_ZN12_GLOBAL__N_118PoolResourceFuzzerILm128ELm1EE17RandomContentFillERNS1_5EntryE
Unexecuted instantiation: poolresource.cpp:_ZN12_GLOBAL__N_118PoolResourceFuzzerILm128ELm2EE17RandomContentFillERNS1_5EntryE
Unexecuted instantiation: poolresource.cpp:_ZN12_GLOBAL__N_118PoolResourceFuzzerILm128ELm4EE17RandomContentFillERNS1_5EntryE
Unexecuted instantiation: poolresource.cpp:_ZN12_GLOBAL__N_118PoolResourceFuzzerILm128ELm8EE17RandomContentFillERNS1_5EntryE
Unexecuted instantiation: poolresource.cpp:_ZN12_GLOBAL__N_118PoolResourceFuzzerILm8ELm8EE17RandomContentFillERNS1_5EntryE
Unexecuted instantiation: poolresource.cpp:_ZN12_GLOBAL__N_118PoolResourceFuzzerILm16ELm16EE17RandomContentFillERNS1_5EntryE
Unexecuted instantiation: poolresource.cpp:_ZN12_GLOBAL__N_118PoolResourceFuzzerILm256ELm16EE17RandomContentFillERNS1_5EntryE
Unexecuted instantiation: poolresource.cpp:_ZN12_GLOBAL__N_118PoolResourceFuzzerILm256ELm64EE17RandomContentFillERNS1_5EntryE
77
78
    void RandomContentCheck(const Entry& entry)
79
0
    {
80
0
        std::vector<std::byte> expect(entry.span.size());
81
0
        InsecureRandomContext(entry.seed).fillrand(expect);
82
0
        assert(std::ranges::equal(entry.span, expect));
  Branch (82:9): [True: 0, False: 0]
  Branch (82:9): [True: 0, False: 0]
  Branch (82:9): [True: 0, False: 0]
  Branch (82:9): [True: 0, False: 0]
  Branch (82:9): [True: 0, False: 0]
  Branch (82:9): [True: 0, False: 0]
  Branch (82:9): [True: 0, False: 0]
  Branch (82:9): [True: 0, False: 0]
83
0
    }
Unexecuted instantiation: poolresource.cpp:_ZN12_GLOBAL__N_118PoolResourceFuzzerILm128ELm1EE18RandomContentCheckERKNS1_5EntryE
Unexecuted instantiation: poolresource.cpp:_ZN12_GLOBAL__N_118PoolResourceFuzzerILm128ELm2EE18RandomContentCheckERKNS1_5EntryE
Unexecuted instantiation: poolresource.cpp:_ZN12_GLOBAL__N_118PoolResourceFuzzerILm128ELm4EE18RandomContentCheckERKNS1_5EntryE
Unexecuted instantiation: poolresource.cpp:_ZN12_GLOBAL__N_118PoolResourceFuzzerILm128ELm8EE18RandomContentCheckERKNS1_5EntryE
Unexecuted instantiation: poolresource.cpp:_ZN12_GLOBAL__N_118PoolResourceFuzzerILm8ELm8EE18RandomContentCheckERKNS1_5EntryE
Unexecuted instantiation: poolresource.cpp:_ZN12_GLOBAL__N_118PoolResourceFuzzerILm16ELm16EE18RandomContentCheckERKNS1_5EntryE
Unexecuted instantiation: poolresource.cpp:_ZN12_GLOBAL__N_118PoolResourceFuzzerILm256ELm16EE18RandomContentCheckERKNS1_5EntryE
Unexecuted instantiation: poolresource.cpp:_ZN12_GLOBAL__N_118PoolResourceFuzzerILm256ELm64EE18RandomContentCheckERKNS1_5EntryE
84
85
    void Deallocate(const Entry& entry)
86
0
    {
87
0
        auto ptr_val = reinterpret_cast<std::uintptr_t>(entry.span.data());
88
0
        assert((ptr_val & (entry.alignment - 1)) == 0);
  Branch (88:9): [True: 0, False: 0]
  Branch (88:9): [True: 0, False: 0]
  Branch (88:9): [True: 0, False: 0]
  Branch (88:9): [True: 0, False: 0]
  Branch (88:9): [True: 0, False: 0]
  Branch (88:9): [True: 0, False: 0]
  Branch (88:9): [True: 0, False: 0]
  Branch (88:9): [True: 0, False: 0]
89
0
        RandomContentCheck(entry);
90
0
        m_total_allocated -= entry.span.size();
91
0
        m_test_resource.Deallocate(entry.span.data(), entry.span.size(), entry.alignment);
92
0
    }
Unexecuted instantiation: poolresource.cpp:_ZN12_GLOBAL__N_118PoolResourceFuzzerILm128ELm1EE10DeallocateERKNS1_5EntryE
Unexecuted instantiation: poolresource.cpp:_ZN12_GLOBAL__N_118PoolResourceFuzzerILm128ELm2EE10DeallocateERKNS1_5EntryE
Unexecuted instantiation: poolresource.cpp:_ZN12_GLOBAL__N_118PoolResourceFuzzerILm128ELm4EE10DeallocateERKNS1_5EntryE
Unexecuted instantiation: poolresource.cpp:_ZN12_GLOBAL__N_118PoolResourceFuzzerILm128ELm8EE10DeallocateERKNS1_5EntryE
Unexecuted instantiation: poolresource.cpp:_ZN12_GLOBAL__N_118PoolResourceFuzzerILm8ELm8EE10DeallocateERKNS1_5EntryE
Unexecuted instantiation: poolresource.cpp:_ZN12_GLOBAL__N_118PoolResourceFuzzerILm16ELm16EE10DeallocateERKNS1_5EntryE
Unexecuted instantiation: poolresource.cpp:_ZN12_GLOBAL__N_118PoolResourceFuzzerILm256ELm16EE10DeallocateERKNS1_5EntryE
Unexecuted instantiation: poolresource.cpp:_ZN12_GLOBAL__N_118PoolResourceFuzzerILm256ELm64EE10DeallocateERKNS1_5EntryE
93
94
    void Deallocate()
95
0
    {
96
0
        if (m_entries.empty()) {
  Branch (96:13): [True: 0, False: 0]
  Branch (96:13): [True: 0, False: 0]
  Branch (96:13): [True: 0, False: 0]
  Branch (96:13): [True: 0, False: 0]
  Branch (96:13): [True: 0, False: 0]
  Branch (96:13): [True: 0, False: 0]
  Branch (96:13): [True: 0, False: 0]
  Branch (96:13): [True: 0, False: 0]
97
0
            return;
98
0
        }
99
100
0
        size_t idx = m_provider.ConsumeIntegralInRange<size_t>(0, m_entries.size() - 1);
101
0
        Deallocate(m_entries[idx]);
102
0
        if (idx != m_entries.size() - 1) {
  Branch (102:13): [True: 0, False: 0]
  Branch (102:13): [True: 0, False: 0]
  Branch (102:13): [True: 0, False: 0]
  Branch (102:13): [True: 0, False: 0]
  Branch (102:13): [True: 0, False: 0]
  Branch (102:13): [True: 0, False: 0]
  Branch (102:13): [True: 0, False: 0]
  Branch (102:13): [True: 0, False: 0]
103
0
            m_entries[idx] = std::move(m_entries.back());
104
0
        }
105
0
        m_entries.pop_back();
106
0
    }
Unexecuted instantiation: poolresource.cpp:_ZN12_GLOBAL__N_118PoolResourceFuzzerILm128ELm1EE10DeallocateEv
Unexecuted instantiation: poolresource.cpp:_ZN12_GLOBAL__N_118PoolResourceFuzzerILm128ELm2EE10DeallocateEv
Unexecuted instantiation: poolresource.cpp:_ZN12_GLOBAL__N_118PoolResourceFuzzerILm128ELm4EE10DeallocateEv
Unexecuted instantiation: poolresource.cpp:_ZN12_GLOBAL__N_118PoolResourceFuzzerILm128ELm8EE10DeallocateEv
Unexecuted instantiation: poolresource.cpp:_ZN12_GLOBAL__N_118PoolResourceFuzzerILm8ELm8EE10DeallocateEv
Unexecuted instantiation: poolresource.cpp:_ZN12_GLOBAL__N_118PoolResourceFuzzerILm16ELm16EE10DeallocateEv
Unexecuted instantiation: poolresource.cpp:_ZN12_GLOBAL__N_118PoolResourceFuzzerILm256ELm16EE10DeallocateEv
Unexecuted instantiation: poolresource.cpp:_ZN12_GLOBAL__N_118PoolResourceFuzzerILm256ELm64EE10DeallocateEv
107
108
    void Clear()
109
0
    {
110
0
        while (!m_entries.empty()) {
  Branch (110:16): [True: 0, False: 0]
  Branch (110:16): [True: 0, False: 0]
  Branch (110:16): [True: 0, False: 0]
  Branch (110:16): [True: 0, False: 0]
  Branch (110:16): [True: 0, False: 0]
  Branch (110:16): [True: 0, False: 0]
  Branch (110:16): [True: 0, False: 0]
  Branch (110:16): [True: 0, False: 0]
111
0
            Deallocate();
112
0
        }
113
114
0
        PoolResourceTester::CheckAllDataAccountedFor(m_test_resource);
115
0
    }
Unexecuted instantiation: poolresource.cpp:_ZN12_GLOBAL__N_118PoolResourceFuzzerILm128ELm1EE5ClearEv
Unexecuted instantiation: poolresource.cpp:_ZN12_GLOBAL__N_118PoolResourceFuzzerILm128ELm2EE5ClearEv
Unexecuted instantiation: poolresource.cpp:_ZN12_GLOBAL__N_118PoolResourceFuzzerILm128ELm4EE5ClearEv
Unexecuted instantiation: poolresource.cpp:_ZN12_GLOBAL__N_118PoolResourceFuzzerILm128ELm8EE5ClearEv
Unexecuted instantiation: poolresource.cpp:_ZN12_GLOBAL__N_118PoolResourceFuzzerILm8ELm8EE5ClearEv
Unexecuted instantiation: poolresource.cpp:_ZN12_GLOBAL__N_118PoolResourceFuzzerILm16ELm16EE5ClearEv
Unexecuted instantiation: poolresource.cpp:_ZN12_GLOBAL__N_118PoolResourceFuzzerILm256ELm16EE5ClearEv
Unexecuted instantiation: poolresource.cpp:_ZN12_GLOBAL__N_118PoolResourceFuzzerILm256ELm64EE5ClearEv
116
117
    void Fuzz()
118
0
    {
119
0
        LIMITED_WHILE (m_provider.ConsumeBool(), 10000) {
120
0
            CallOneOf(
121
0
                m_provider,
122
0
                [&] { Allocate(); },
Unexecuted instantiation: poolresource.cpp:_ZZN12_GLOBAL__N_118PoolResourceFuzzerILm128ELm1EE4FuzzEvENKUlvE_clEv
Unexecuted instantiation: poolresource.cpp:_ZZN12_GLOBAL__N_118PoolResourceFuzzerILm128ELm2EE4FuzzEvENKUlvE_clEv
Unexecuted instantiation: poolresource.cpp:_ZZN12_GLOBAL__N_118PoolResourceFuzzerILm128ELm4EE4FuzzEvENKUlvE_clEv
Unexecuted instantiation: poolresource.cpp:_ZZN12_GLOBAL__N_118PoolResourceFuzzerILm128ELm8EE4FuzzEvENKUlvE_clEv
Unexecuted instantiation: poolresource.cpp:_ZZN12_GLOBAL__N_118PoolResourceFuzzerILm8ELm8EE4FuzzEvENKUlvE_clEv
Unexecuted instantiation: poolresource.cpp:_ZZN12_GLOBAL__N_118PoolResourceFuzzerILm16ELm16EE4FuzzEvENKUlvE_clEv
Unexecuted instantiation: poolresource.cpp:_ZZN12_GLOBAL__N_118PoolResourceFuzzerILm256ELm16EE4FuzzEvENKUlvE_clEv
Unexecuted instantiation: poolresource.cpp:_ZZN12_GLOBAL__N_118PoolResourceFuzzerILm256ELm64EE4FuzzEvENKUlvE_clEv
123
0
                [&] { Deallocate(); });
Unexecuted instantiation: poolresource.cpp:_ZZN12_GLOBAL__N_118PoolResourceFuzzerILm128ELm1EE4FuzzEvENKUlvE0_clEv
Unexecuted instantiation: poolresource.cpp:_ZZN12_GLOBAL__N_118PoolResourceFuzzerILm128ELm2EE4FuzzEvENKUlvE0_clEv
Unexecuted instantiation: poolresource.cpp:_ZZN12_GLOBAL__N_118PoolResourceFuzzerILm128ELm4EE4FuzzEvENKUlvE0_clEv
Unexecuted instantiation: poolresource.cpp:_ZZN12_GLOBAL__N_118PoolResourceFuzzerILm128ELm8EE4FuzzEvENKUlvE0_clEv
Unexecuted instantiation: poolresource.cpp:_ZZN12_GLOBAL__N_118PoolResourceFuzzerILm8ELm8EE4FuzzEvENKUlvE0_clEv
Unexecuted instantiation: poolresource.cpp:_ZZN12_GLOBAL__N_118PoolResourceFuzzerILm16ELm16EE4FuzzEvENKUlvE0_clEv
Unexecuted instantiation: poolresource.cpp:_ZZN12_GLOBAL__N_118PoolResourceFuzzerILm256ELm16EE4FuzzEvENKUlvE0_clEv
Unexecuted instantiation: poolresource.cpp:_ZZN12_GLOBAL__N_118PoolResourceFuzzerILm256ELm64EE4FuzzEvENKUlvE0_clEv
124
0
        }
125
0
        Clear();
126
0
    }
Unexecuted instantiation: poolresource.cpp:_ZN12_GLOBAL__N_118PoolResourceFuzzerILm128ELm1EE4FuzzEv
Unexecuted instantiation: poolresource.cpp:_ZN12_GLOBAL__N_118PoolResourceFuzzerILm128ELm2EE4FuzzEv
Unexecuted instantiation: poolresource.cpp:_ZN12_GLOBAL__N_118PoolResourceFuzzerILm128ELm4EE4FuzzEv
Unexecuted instantiation: poolresource.cpp:_ZN12_GLOBAL__N_118PoolResourceFuzzerILm128ELm8EE4FuzzEv
Unexecuted instantiation: poolresource.cpp:_ZN12_GLOBAL__N_118PoolResourceFuzzerILm8ELm8EE4FuzzEv
Unexecuted instantiation: poolresource.cpp:_ZN12_GLOBAL__N_118PoolResourceFuzzerILm16ELm16EE4FuzzEv
Unexecuted instantiation: poolresource.cpp:_ZN12_GLOBAL__N_118PoolResourceFuzzerILm256ELm16EE4FuzzEv
Unexecuted instantiation: poolresource.cpp:_ZN12_GLOBAL__N_118PoolResourceFuzzerILm256ELm64EE4FuzzEv
127
};
128
129
130
} // namespace
131
132
FUZZ_TARGET(pool_resource)
133
0
{
134
0
    FuzzedDataProvider provider(buffer.data(), buffer.size());
135
0
    CallOneOf(
136
0
        provider,
137
0
        [&] { PoolResourceFuzzer<128, 1>{provider}.Fuzz(); },
138
0
        [&] { PoolResourceFuzzer<128, 2>{provider}.Fuzz(); },
139
0
        [&] { PoolResourceFuzzer<128, 4>{provider}.Fuzz(); },
140
0
        [&] { PoolResourceFuzzer<128, 8>{provider}.Fuzz(); },
141
142
0
        [&] { PoolResourceFuzzer<8, 8>{provider}.Fuzz(); },
143
0
        [&] { PoolResourceFuzzer<16, 16>{provider}.Fuzz(); },
144
145
0
        [&] { PoolResourceFuzzer<256, alignof(max_align_t)>{provider}.Fuzz(); },
146
0
        [&] { PoolResourceFuzzer<256, 64>{provider}.Fuzz(); });
147
0
}