Coverage Report

Created: 2024-11-21 06:35

/src/gfwx-fuzzers/fuzzing-headers/include/fuzzing/memory.hpp
Line
Count
Source (jump to first uncovered line)
1
#ifndef FUZZING_MEMORY_HPP
2
#define FUZZING_MEMORY_HPP
3
4
#include <stdio.h>
5
#include <optional>
6
#include <string>
7
8
namespace fuzzing {
9
namespace memory {
10
11
void memory_test_msan(const void* data, const size_t size);
12
13
#ifndef FUZZING_HEADERS_NO_IMPL
14
#if ASAN == 1
15
extern "C" void *__asan_region_is_poisoned(const void *beg, size_t size);
16
#endif
17
18
void memory_test_asan(const void* data, const size_t size)
19
0
{
20
0
    (void)data;
21
0
    (void)size;
22
23
#if ASAN == 1
24
    if ( __asan_region_is_poisoned(data, size) != NULL ) {
25
        abort();
26
    }
27
#endif
28
0
}
29
30
void memory_test_msan(const void* data, const size_t size)
31
0
{
32
0
    (void)data;
33
0
    (void)size;
34
35
#if MSAN == 1
36
    FILE* fp = fopen("/dev/null", "wb");
37
    if ( fp == nullptr ) {
38
        abort();
39
    }
40
    fwrite(data, size, 1, fp);
41
    fclose(fp);
42
#endif
43
0
}
44
45
void memory_test(const void* data, const size_t size)
46
0
{
47
0
    memory_test_asan(data, size);
48
0
    memory_test_msan(data, size);
49
0
}
50
51
template <class T>
52
void memory_test(const T& t)
53
284
{
54
284
    (void)t;
55
284
}
56
57
template <>
58
void memory_test(const std::string& s)
59
0
{
60
0
    (void)s;
61
62
#if MSAN == 1
63
    memory_test(s.data(), s.size());
64
#endif
65
0
}
66
67
#endif
68
69
} /* namespace memory */
70
} /* namespace fuzzing */
71
72
#endif