Skip to content

Commit 6666c82

Browse files
author
MarcoFalke
committed
fuzz: Give CNode ownership to ConnmanTestMsg in process_message fuzz harness
1 parent 88d8b4e commit 6666c82

File tree

1 file changed

+4
-1
lines changed

1 file changed

+4
-1
lines changed

src/test/fuzz/process_message.cpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
#include <test/fuzz/FuzzedDataProvider.h>
1515
#include <test/fuzz/fuzz.h>
1616
#include <test/util/mining.h>
17+
#include <test/util/net.h>
1718
#include <test/util/setup_common.h>
1819
#include <util/memory.h>
1920
#include <validationinterface.h>
@@ -63,15 +64,17 @@ void initialize()
6364
void test_one_input(const std::vector<uint8_t>& buffer)
6465
{
6566
FuzzedDataProvider fuzzed_data_provider(buffer.data(), buffer.size());
67+
ConnmanTestMsg& connman = *(ConnmanTestMsg*)g_setup->m_node.connman.get();
6668
const std::string random_message_type{fuzzed_data_provider.ConsumeBytesAsString(CMessageHeader::COMMAND_SIZE).c_str()};
6769
if (!LIMIT_TO_MESSAGE_TYPE.empty() && random_message_type != LIMIT_TO_MESSAGE_TYPE) {
6870
return;
6971
}
7072
CDataStream random_bytes_data_stream{fuzzed_data_provider.ConsumeRemainingBytes<unsigned char>(), SER_NETWORK, PROTOCOL_VERSION};
71-
CNode p2p_node{0, ServiceFlags(NODE_NETWORK | NODE_WITNESS | NODE_BLOOM), 0, INVALID_SOCKET, CAddress{CService{in_addr{0x0100007f}, 7777}, NODE_NETWORK}, 0, 0, CAddress{}, std::string{}, false};
73+
CNode& p2p_node = *MakeUnique<CNode>(0, ServiceFlags(NODE_NETWORK | NODE_WITNESS | NODE_BLOOM), 0, INVALID_SOCKET, CAddress{CService{in_addr{0x0100007f}, 7777}, NODE_NETWORK}, 0, 0, CAddress{}, std::string{}, false).release();
7274
p2p_node.fSuccessfullyConnected = true;
7375
p2p_node.nVersion = PROTOCOL_VERSION;
7476
p2p_node.SetSendVersion(PROTOCOL_VERSION);
77+
connman.AddTestNode(p2p_node);
7578
g_setup->m_node.peer_logic->InitializeNode(&p2p_node);
7679
try {
7780
(void)ProcessMessage(&p2p_node, random_message_type, random_bytes_data_stream, GetTimeMillis(), Params(), *g_setup->m_node.mempool, g_setup->m_node.connman.get(), g_setup->m_node.banman.get(), std::atomic<bool>{false});

0 commit comments

Comments
 (0)