From d29b22d07897058eb69c862ecea8b00325229de2 Mon Sep 17 00:00:00 2001 From: Hao Xu Date: Sun, 26 Jul 2026 19:05:17 +0800 Subject: [PATCH] fuzz: reset connman state in p2p targets Clear ConnmanTestMsg state at the start of each input in cmpctblock and p2p_handshake so sticky CConnman state does not leak between fuzz inputs. --- src/test/fuzz/cmpctblock.cpp | 3 ++- src/test/fuzz/p2p_handshake.cpp | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/test/fuzz/cmpctblock.cpp b/src/test/fuzz/cmpctblock.cpp index e2aea86a89e..b5dc4fee5b9 100644 --- a/src/test/fuzz/cmpctblock.cpp +++ b/src/test/fuzz/cmpctblock.cpp @@ -167,6 +167,8 @@ FUZZ_TARGET(cmpctblock, .init = initialize_cmpctblock) FakeSteadyClock steady_clock; auto setup = g_setup; + auto& connman = *static_cast(setup->m_node.connman.get()); + connman.Reset(); auto& mempool = *setup->m_node.mempool; auto& chainman = static_cast(*setup->m_node.chainman); chainman.ResetIbd(); @@ -174,7 +176,6 @@ FUZZ_TARGET(cmpctblock, .init = initialize_cmpctblock) const size_t initial_index_size{WITH_LOCK(chainman.GetMutex(), return chainman.BlockIndex().size())}; AddrMan addrman{*setup->m_node.netgroupman, /*deterministic=*/true, /*consistency_check_ratio=*/0}; - auto& connman = *static_cast(setup->m_node.connman.get()); auto peerman = PeerManager::make(connman, addrman, /*banman=*/nullptr, chainman, mempool, *setup->m_node.warnings, diff --git a/src/test/fuzz/p2p_handshake.cpp b/src/test/fuzz/p2p_handshake.cpp index a71a61b85c9..05a86a01629 100644 --- a/src/test/fuzz/p2p_handshake.cpp +++ b/src/test/fuzz/p2p_handshake.cpp @@ -40,6 +40,7 @@ FUZZ_TARGET(p2p_handshake, .init = ::initialize) auto& node{g_setup->m_node}; auto& connman{static_cast(*node.connman)}; + connman.Reset(); auto& chainman{static_cast(*node.chainman)}; FakeNodeClock clock{1610000000s}; // any time to successfully reset ibd FakeSteadyClock steady_clock;