Skip to content

Commit cfb59da

Browse files
committed
Merge bitcoin/bitcoin#30980: fuzz: fix bug in p2p_headers_presync harness
a7498cc Fix bug in p2p_headers_presync harness (marcofleon) Pull request description: The calculation for the test chain's work (`total_work`) should be outside of the loop. Previously, `total_work` was being miscalculated due to multiple additions of work from the same headers. Now, each header's work is only counted once, providing an accurate total. bitcoin/bitcoin#30918 followup ACKs for top commit: dergoegge: utACK a7498cc instagibbs: ACK a7498cc glozow: makes sense, utACK a7498cc mzumsande: ACK bitcoin/bitcoin@a7498cc Tree-SHA512: b95f25dcf7ace220e30f1d72f50d85ee18777467927c0cc1ed8582b390cb7185ffc0e2f127309eb083044fb41f5a13fce5ebb15b7952718a899bafff26921be8
2 parents dda2613 + a7498cc commit cfb59da

File tree

1 file changed

+7
-7
lines changed

1 file changed

+7
-7
lines changed

src/test/fuzz/p2p_headers_presync.cpp

+7-7
Original file line numberDiff line numberDiff line change
@@ -197,15 +197,15 @@ FUZZ_TARGET(p2p_headers_presync, .init = initialize)
197197
auto headers_msg = NetMsg::Make(NetMsgType::BLOCK, TX_WITH_WITNESS(block));
198198
g_testing_setup->SendMessage(fuzzed_data_provider, std::move(headers_msg));
199199
});
200+
}
200201

201-
// This is a conservative overestimate, as base is only moved forward when sending headers. In theory,
202-
// the longest chain generated by this test is 1600 (FUZZ_MAX_HEADERS_RESULTS * 100) headers. In that case,
203-
// this variable will accurately reflect the chain's total work.
204-
total_work += CalculateClaimedHeadersWork(all_headers);
202+
// This is a conservative overestimate, as base is only moved forward when sending headers. In theory,
203+
// the longest chain generated by this test is 1600 (FUZZ_MAX_HEADERS_RESULTS * 100) headers. In that case,
204+
// this variable will accurately reflect the chain's total work.
205+
total_work += CalculateClaimedHeadersWork(all_headers);
205206

206-
// This test should never create a chain with more work than MinimumChainWork.
207-
assert(total_work < chainman.MinimumChainWork());
208-
}
207+
// This test should never create a chain with more work than MinimumChainWork.
208+
assert(total_work < chainman.MinimumChainWork());
209209

210210
// The headers/blocks sent in this test should never be stored, as the chains don't have the work required
211211
// to meet the anti-DoS work threshold. So, if at any point the block index grew in size, then there's a bug

0 commit comments

Comments
 (0)