1616#include < test/util/mining.h>
1717#include < test/util/net.h>
1818#include < test/util/setup_common.h>
19+ #include < test/util/validation.h>
1920#include < util/memory.h>
2021#include < validationinterface.h>
2122#include < version.h>
@@ -63,10 +64,14 @@ void test_one_input(const std::vector<uint8_t>& buffer)
6364{
6465 FuzzedDataProvider fuzzed_data_provider (buffer.data (), buffer.size ());
6566 ConnmanTestMsg& connman = *(ConnmanTestMsg*)g_setup->m_node .connman .get ();
67+ TestChainState& chainstate = *(TestChainState*)&g_setup->m_node .chainman ->ActiveChainstate ();
68+ chainstate.ResetIbd ();
6669 const std::string random_message_type{fuzzed_data_provider.ConsumeBytesAsString (CMessageHeader::COMMAND_SIZE).c_str ()};
6770 if (!LIMIT_TO_MESSAGE_TYPE.empty () && random_message_type != LIMIT_TO_MESSAGE_TYPE) {
6871 return ;
6972 }
73+ const bool jump_out_of_ibd{fuzzed_data_provider.ConsumeBool ()};
74+ if (jump_out_of_ibd) chainstate.JumpOutOfIbd ();
7075 CDataStream random_bytes_data_stream{fuzzed_data_provider.ConsumeRemainingBytes <unsigned char >(), SER_NETWORK, PROTOCOL_VERSION};
7176 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{}, ConnectionType::OUTBOUND_FULL_RELAY).release ();
7277 p2p_node.fSuccessfullyConnected = true ;
@@ -76,7 +81,7 @@ void test_one_input(const std::vector<uint8_t>& buffer)
7681 g_setup->m_node .peerman ->InitializeNode (&p2p_node);
7782 try {
7883 g_setup->m_node .peerman ->ProcessMessage (p2p_node, random_message_type, random_bytes_data_stream,
79- GetTime<std::chrono::microseconds>(), std::atomic<bool >{false });
84+ GetTime<std::chrono::microseconds>(), std::atomic<bool >{false });
8085 } catch (const std::ios_base::failure&) {
8186 }
8287 SyncWithValidationInterfaceQueue ();
0 commit comments