Coverage Report

Created: 2024-01-26 01:52

/work/toxcore/tox_events_fuzz_test.cc
Line
Count
Source
1
#include "tox_events.h"
2
3
#include <cassert>
4
#include <cstdint>
5
#include <cstring>
6
#include <vector>
7
8
#include "../testing/fuzzing/fuzz_support.h"
9
#include "tox_dispatch.h"
10
11
namespace {
12
13
void TestUnpack(Fuzz_Data data)
14
606
{
15
    // 2 bytes: size of the events data
16
606
    CONSUME_OR_RETURN(const uint8_t *events_size_bytes, data, sizeof(uint16_t));
17
605
    uint16_t events_size;
18
605
    std::memcpy(&events_size, events_size_bytes, sizeof(uint16_t));
19
20
    // events_size bytes: events data (max 64K)
21
605
    CONSUME_OR_RETURN(const uint8_t *events_data, data, events_size);
22
23
604
    if (data.empty()) {
24
        // If there's no more input, no malloc failure paths can possibly be
25
        // tested, so we ignore this input.
26
1
        return;
27
1
    }
28
29
    // rest of the fuzz data is input for malloc
30
603
    Fuzz_System sys{data};
31
32
603
    Tox_Dispatch *dispatch = tox_dispatch_new(nullptr);
33
603
    assert(dispatch != nullptr);
34
35
603
    auto ignore = [](Tox *tox, auto *event, void *user_data) {};
unity_0_cxx.cxx:_ZZN12_GLOBAL__N_110TestUnpackE9Fuzz_DataENK3$_0clIK30Tox_Event_Conference_ConnectedEEDaP3ToxPT_Pv
Line
Count
Source
35
4
    auto ignore = [](Tox *tox, auto *event, void *user_data) {};
unity_0_cxx.cxx:_ZZN12_GLOBAL__N_110TestUnpackE9Fuzz_DataENK3$_0clIK27Tox_Event_Conference_InviteEEDaP3ToxPT_Pv
Line
Count
Source
35
1
    auto ignore = [](Tox *tox, auto *event, void *user_data) {};
unity_0_cxx.cxx:_ZZN12_GLOBAL__N_110TestUnpackE9Fuzz_DataENK3$_0clIK28Tox_Event_Conference_MessageEEDaP3ToxPT_Pv
Line
Count
Source
35
1
    auto ignore = [](Tox *tox, auto *event, void *user_data) {};
unity_0_cxx.cxx:_ZZN12_GLOBAL__N_110TestUnpackE9Fuzz_DataENK3$_0clIK38Tox_Event_Conference_Peer_List_ChangedEEDaP3ToxPT_Pv
Line
Count
Source
35
60
    auto ignore = [](Tox *tox, auto *event, void *user_data) {};
unity_0_cxx.cxx:_ZZN12_GLOBAL__N_110TestUnpackE9Fuzz_DataENK3$_0clIK30Tox_Event_Conference_Peer_NameEEDaP3ToxPT_Pv
Line
Count
Source
35
6
    auto ignore = [](Tox *tox, auto *event, void *user_data) {};
unity_0_cxx.cxx:_ZZN12_GLOBAL__N_110TestUnpackE9Fuzz_DataENK3$_0clIK26Tox_Event_Conference_TitleEEDaP3ToxPT_Pv
Line
Count
Source
35
48
    auto ignore = [](Tox *tox, auto *event, void *user_data) {};
unity_0_cxx.cxx:_ZZN12_GLOBAL__N_110TestUnpackE9Fuzz_DataENK3$_0clIK28Tox_Event_File_Chunk_RequestEEDaP3ToxPT_Pv
Line
Count
Source
35
47
    auto ignore = [](Tox *tox, auto *event, void *user_data) {};
Unexecuted instantiation: unity_0_cxx.cxx:_ZZN12_GLOBAL__N_110TestUnpackE9Fuzz_DataENK3$_0clIK19Tox_Event_File_RecvEEDaP3ToxPT_Pv
unity_0_cxx.cxx:_ZZN12_GLOBAL__N_110TestUnpackE9Fuzz_DataENK3$_0clIK25Tox_Event_File_Recv_ChunkEEDaP3ToxPT_Pv
Line
Count
Source
35
1
    auto ignore = [](Tox *tox, auto *event, void *user_data) {};
unity_0_cxx.cxx:_ZZN12_GLOBAL__N_110TestUnpackE9Fuzz_DataENK3$_0clIK27Tox_Event_File_Recv_ControlEEDaP3ToxPT_Pv
Line
Count
Source
35
16
    auto ignore = [](Tox *tox, auto *event, void *user_data) {};
unity_0_cxx.cxx:_ZZN12_GLOBAL__N_110TestUnpackE9Fuzz_DataENK3$_0clIK34Tox_Event_Friend_Connection_StatusEEDaP3ToxPT_Pv
Line
Count
Source
35
24
    auto ignore = [](Tox *tox, auto *event, void *user_data) {};
unity_0_cxx.cxx:_ZZN12_GLOBAL__N_110TestUnpackE9Fuzz_DataENK3$_0clIK32Tox_Event_Friend_Lossless_PacketEEDaP3ToxPT_Pv
Line
Count
Source
35
11
    auto ignore = [](Tox *tox, auto *event, void *user_data) {};
unity_0_cxx.cxx:_ZZN12_GLOBAL__N_110TestUnpackE9Fuzz_DataENK3$_0clIK29Tox_Event_Friend_Lossy_PacketEEDaP3ToxPT_Pv
Line
Count
Source
35
15
    auto ignore = [](Tox *tox, auto *event, void *user_data) {};
unity_0_cxx.cxx:_ZZN12_GLOBAL__N_110TestUnpackE9Fuzz_DataENK3$_0clIK24Tox_Event_Friend_MessageEEDaP3ToxPT_Pv
Line
Count
Source
35
1
    auto ignore = [](Tox *tox, auto *event, void *user_data) {};
unity_0_cxx.cxx:_ZZN12_GLOBAL__N_110TestUnpackE9Fuzz_DataENK3$_0clIK21Tox_Event_Friend_NameEEDaP3ToxPT_Pv
Line
Count
Source
35
34
    auto ignore = [](Tox *tox, auto *event, void *user_data) {};
unity_0_cxx.cxx:_ZZN12_GLOBAL__N_110TestUnpackE9Fuzz_DataENK3$_0clIK29Tox_Event_Friend_Read_ReceiptEEDaP3ToxPT_Pv
Line
Count
Source
35
11
    auto ignore = [](Tox *tox, auto *event, void *user_data) {};
Unexecuted instantiation: unity_0_cxx.cxx:_ZZN12_GLOBAL__N_110TestUnpackE9Fuzz_DataENK3$_0clIK24Tox_Event_Friend_RequestEEDaP3ToxPT_Pv
unity_0_cxx.cxx:_ZZN12_GLOBAL__N_110TestUnpackE9Fuzz_DataENK3$_0clIK23Tox_Event_Friend_StatusEEDaP3ToxPT_Pv
Line
Count
Source
35
28
    auto ignore = [](Tox *tox, auto *event, void *user_data) {};
unity_0_cxx.cxx:_ZZN12_GLOBAL__N_110TestUnpackE9Fuzz_DataENK3$_0clIK31Tox_Event_Friend_Status_MessageEEDaP3ToxPT_Pv
Line
Count
Source
35
12
    auto ignore = [](Tox *tox, auto *event, void *user_data) {};
unity_0_cxx.cxx:_ZZN12_GLOBAL__N_110TestUnpackE9Fuzz_DataENK3$_0clIK23Tox_Event_Friend_TypingEEDaP3ToxPT_Pv
Line
Count
Source
35
18
    auto ignore = [](Tox *tox, auto *event, void *user_data) {};
unity_0_cxx.cxx:_ZZN12_GLOBAL__N_110TestUnpackE9Fuzz_DataENK3$_0clIK32Tox_Event_Self_Connection_StatusEEDaP3ToxPT_Pv
Line
Count
Source
35
62
    auto ignore = [](Tox *tox, auto *event, void *user_data) {};
unity_0_cxx.cxx:_ZZN12_GLOBAL__N_110TestUnpackE9Fuzz_DataENK3$_0clIK25Tox_Event_Group_Peer_NameEEDaP3ToxPT_Pv
Line
Count
Source
35
10
    auto ignore = [](Tox *tox, auto *event, void *user_data) {};
unity_0_cxx.cxx:_ZZN12_GLOBAL__N_110TestUnpackE9Fuzz_DataENK3$_0clIK27Tox_Event_Group_Peer_StatusEEDaP3ToxPT_Pv
Line
Count
Source
35
6
    auto ignore = [](Tox *tox, auto *event, void *user_data) {};
unity_0_cxx.cxx:_ZZN12_GLOBAL__N_110TestUnpackE9Fuzz_DataENK3$_0clIK21Tox_Event_Group_TopicEEDaP3ToxPT_Pv
Line
Count
Source
35
14
    auto ignore = [](Tox *tox, auto *event, void *user_data) {};
unity_0_cxx.cxx:_ZZN12_GLOBAL__N_110TestUnpackE9Fuzz_DataENK3$_0clIK29Tox_Event_Group_Privacy_StateEEDaP3ToxPT_Pv
Line
Count
Source
35
12
    auto ignore = [](Tox *tox, auto *event, void *user_data) {};
unity_0_cxx.cxx:_ZZN12_GLOBAL__N_110TestUnpackE9Fuzz_DataENK3$_0clIK27Tox_Event_Group_Voice_StateEEDaP3ToxPT_Pv
Line
Count
Source
35
24
    auto ignore = [](Tox *tox, auto *event, void *user_data) {};
unity_0_cxx.cxx:_ZZN12_GLOBAL__N_110TestUnpackE9Fuzz_DataENK3$_0clIK26Tox_Event_Group_Topic_LockEEDaP3ToxPT_Pv
Line
Count
Source
35
25
    auto ignore = [](Tox *tox, auto *event, void *user_data) {};
unity_0_cxx.cxx:_ZZN12_GLOBAL__N_110TestUnpackE9Fuzz_DataENK3$_0clIK26Tox_Event_Group_Peer_LimitEEDaP3ToxPT_Pv
Line
Count
Source
35
12
    auto ignore = [](Tox *tox, auto *event, void *user_data) {};
unity_0_cxx.cxx:_ZZN12_GLOBAL__N_110TestUnpackE9Fuzz_DataENK3$_0clIK24Tox_Event_Group_PasswordEEDaP3ToxPT_Pv
Line
Count
Source
35
6
    auto ignore = [](Tox *tox, auto *event, void *user_data) {};
unity_0_cxx.cxx:_ZZN12_GLOBAL__N_110TestUnpackE9Fuzz_DataENK3$_0clIK23Tox_Event_Group_MessageEEDaP3ToxPT_Pv
Line
Count
Source
35
10
    auto ignore = [](Tox *tox, auto *event, void *user_data) {};
unity_0_cxx.cxx:_ZZN12_GLOBAL__N_110TestUnpackE9Fuzz_DataENK3$_0clIK31Tox_Event_Group_Private_MessageEEDaP3ToxPT_Pv
Line
Count
Source
35
1
    auto ignore = [](Tox *tox, auto *event, void *user_data) {};
unity_0_cxx.cxx:_ZZN12_GLOBAL__N_110TestUnpackE9Fuzz_DataENK3$_0clIK29Tox_Event_Group_Custom_PacketEEDaP3ToxPT_Pv
Line
Count
Source
35
10
    auto ignore = [](Tox *tox, auto *event, void *user_data) {};
unity_0_cxx.cxx:_ZZN12_GLOBAL__N_110TestUnpackE9Fuzz_DataENK3$_0clIK37Tox_Event_Group_Custom_Private_PacketEEDaP3ToxPT_Pv
Line
Count
Source
35
1
    auto ignore = [](Tox *tox, auto *event, void *user_data) {};
Unexecuted instantiation: unity_0_cxx.cxx:_ZZN12_GLOBAL__N_110TestUnpackE9Fuzz_DataENK3$_0clIK22Tox_Event_Group_InviteEEDaP3ToxPT_Pv
unity_0_cxx.cxx:_ZZN12_GLOBAL__N_110TestUnpackE9Fuzz_DataENK3$_0clIK25Tox_Event_Group_Peer_JoinEEDaP3ToxPT_Pv
Line
Count
Source
35
10
    auto ignore = [](Tox *tox, auto *event, void *user_data) {};
unity_0_cxx.cxx:_ZZN12_GLOBAL__N_110TestUnpackE9Fuzz_DataENK3$_0clIK25Tox_Event_Group_Peer_ExitEEDaP3ToxPT_Pv
Line
Count
Source
35
10
    auto ignore = [](Tox *tox, auto *event, void *user_data) {};
unity_0_cxx.cxx:_ZZN12_GLOBAL__N_110TestUnpackE9Fuzz_DataENK3$_0clIK25Tox_Event_Group_Self_JoinEEDaP3ToxPT_Pv
Line
Count
Source
35
12
    auto ignore = [](Tox *tox, auto *event, void *user_data) {};
unity_0_cxx.cxx:_ZZN12_GLOBAL__N_110TestUnpackE9Fuzz_DataENK3$_0clIK25Tox_Event_Group_Join_FailEEDaP3ToxPT_Pv
Line
Count
Source
35
25
    auto ignore = [](Tox *tox, auto *event, void *user_data) {};
unity_0_cxx.cxx:_ZZN12_GLOBAL__N_110TestUnpackE9Fuzz_DataENK3$_0clIK26Tox_Event_Group_ModerationEEDaP3ToxPT_Pv
Line
Count
Source
35
13
    auto ignore = [](Tox *tox, auto *event, void *user_data) {};
36
603
    tox_events_callback_conference_connected(dispatch, ignore);
37
603
    tox_events_callback_conference_invite(dispatch, ignore);
38
603
    tox_events_callback_conference_message(dispatch, ignore);
39
603
    tox_events_callback_conference_peer_list_changed(dispatch, ignore);
40
603
    tox_events_callback_conference_peer_name(dispatch, ignore);
41
603
    tox_events_callback_conference_title(dispatch, ignore);
42
603
    tox_events_callback_file_chunk_request(dispatch, ignore);
43
603
    tox_events_callback_file_recv(dispatch, ignore);
44
603
    tox_events_callback_file_recv_chunk(dispatch, ignore);
45
603
    tox_events_callback_file_recv_control(dispatch, ignore);
46
603
    tox_events_callback_friend_connection_status(dispatch, ignore);
47
603
    tox_events_callback_friend_lossless_packet(dispatch, ignore);
48
603
    tox_events_callback_friend_lossy_packet(dispatch, ignore);
49
603
    tox_events_callback_friend_message(dispatch, ignore);
50
603
    tox_events_callback_friend_name(dispatch, ignore);
51
603
    tox_events_callback_friend_read_receipt(dispatch, ignore);
52
603
    tox_events_callback_friend_request(dispatch, ignore);
53
603
    tox_events_callback_friend_status(dispatch, ignore);
54
603
    tox_events_callback_friend_status_message(dispatch, ignore);
55
603
    tox_events_callback_friend_typing(dispatch, ignore);
56
603
    tox_events_callback_self_connection_status(dispatch, ignore);
57
603
    tox_events_callback_group_peer_name(dispatch, ignore);
58
603
    tox_events_callback_group_peer_status(dispatch, ignore);
59
603
    tox_events_callback_group_topic(dispatch, ignore);
60
603
    tox_events_callback_group_privacy_state(dispatch, ignore);
61
603
    tox_events_callback_group_voice_state(dispatch, ignore);
62
603
    tox_events_callback_group_topic_lock(dispatch, ignore);
63
603
    tox_events_callback_group_peer_limit(dispatch, ignore);
64
603
    tox_events_callback_group_password(dispatch, ignore);
65
603
    tox_events_callback_group_message(dispatch, ignore);
66
603
    tox_events_callback_group_private_message(dispatch, ignore);
67
603
    tox_events_callback_group_custom_packet(dispatch, ignore);
68
603
    tox_events_callback_group_custom_private_packet(dispatch, ignore);
69
603
    tox_events_callback_group_invite(dispatch, ignore);
70
603
    tox_events_callback_group_peer_join(dispatch, ignore);
71
603
    tox_events_callback_group_peer_exit(dispatch, ignore);
72
603
    tox_events_callback_group_self_join(dispatch, ignore);
73
603
    tox_events_callback_group_join_fail(dispatch, ignore);
74
603
    tox_events_callback_group_moderation(dispatch, ignore);
75
76
603
    Tox_Events *events = tox_events_load(sys.sys.get(), events_data, events_size);
77
603
    if (events) {
78
165
        std::vector<uint8_t> packed(tox_events_bytes_size(events));
79
165
        tox_events_get_bytes(events, packed.data());
80
81
165
        tox_dispatch_invoke(dispatch, events, nullptr, nullptr);
82
165
    }
83
603
    tox_events_free(events);
84
603
    tox_dispatch_free(dispatch);
85
603
}
86
87
}  // namespace
88
89
extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size);
90
extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
91
2.99k
{
92
2.99k
    TestUnpack(Fuzz_Data(data, size));
93
2.99k
    return 0;
94
2.99k
}