Bitcoin Core Fuzz Coverage Report

Coverage Report

Created: 2026-03-24 13:57

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/root/bitcoin/src/support/allocators/zeroafterfree.h
Line
Count
Source
1
// Copyright (c) 2009-2010 Satoshi Nakamoto
2
// Copyright (c) 2009-present The Bitcoin Core developers
3
// Distributed under the MIT software license, see the accompanying
4
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
5
6
#ifndef BITCOIN_SUPPORT_ALLOCATORS_ZEROAFTERFREE_H
7
#define BITCOIN_SUPPORT_ALLOCATORS_ZEROAFTERFREE_H
8
9
#include <support/cleanse.h>
10
11
#include <memory>
12
#include <vector>
13
14
template <typename T>
15
struct zero_after_free_allocator {
16
    using value_type = T;
17
18
    zero_after_free_allocator() noexcept = default;
19
    template <typename U>
20
    zero_after_free_allocator(const zero_after_free_allocator<U>&) noexcept
21
    {
22
    }
23
24
    T* allocate(std::size_t n)
25
0
    {
26
0
        return std::allocator<T>{}.allocate(n);
27
0
    }
28
29
    void deallocate(T* p, std::size_t n)
30
0
    {
31
0
        if (p != nullptr)
32
0
            memory_cleanse(p, sizeof(T) * n);
33
0
        std::allocator<T>{}.deallocate(p, n);
34
0
    }
35
36
    template <typename U>
37
    friend bool operator==(const zero_after_free_allocator&, const zero_after_free_allocator<U>&) noexcept
38
0
    {
39
0
        return true;
40
0
    }
41
};
42
43
/** Byte-vector that clears its contents before deletion. */
44
using SerializeData = std::vector<std::byte, zero_after_free_allocator<std::byte>>;
45
46
#endif // BITCOIN_SUPPORT_ALLOCATORS_ZEROAFTERFREE_H