Coverage Report

Created: 2023-02-22 06:39

/src/cryptofuzz/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
7
namespace fuzzing {
8
namespace memory {
9
10
void memory_test_msan(const void* data, const size_t size);
11
12
#ifndef FUZZING_HEADERS_NO_IMPL
13
#if ASAN == 1
14
extern "C" void *__asan_region_is_poisoned(const void *beg, size_t size);
15
#endif
16
17
void memory_test_asan(const void* data, const size_t size)
18
0
{
19
0
    (void)data;
20
0
    (void)size;
21
22
#if ASAN == 1
23
    if ( __asan_region_is_poisoned(data, size) != NULL ) {
24
        abort();
25
    }
26
#endif
27
0
}
28
29
void memory_test_msan(const void* data, const size_t size)
30
2.06k
{
31
2.06k
    (void)data;
32
2.06k
    (void)size;
33
34
#if MSAN == 1
35
    FILE* fp = fopen("/dev/null", "wb");
36
    if ( fp == nullptr ) {
37
        abort();
38
    }
39
    fwrite(data, size, 1, fp);
40
    fclose(fp);
41
#endif
42
2.06k
}
43
44
void memory_test(const void* data, const size_t size)
45
0
{
46
0
    memory_test_asan(data, size);
47
0
    memory_test_msan(data, size);
48
0
}
49
50
template <class T>
51
void memory_test(const T& t)
52
{
53
    (void)t;
54
}
55
56
template <>
57
void memory_test(const std::string& s)
58
0
{
59
0
    (void)s;
60
61
#if MSAN == 1
62
    memory_test(s.data(), s.size());
63
#endif
64
0
}
65
66
#endif
67
68
} /* namespace memory */
69
} /* namespace fuzzing */
70
71
#endif