Change CChain::Contains() to take reference

The `CChain::Contains()` method dereferences its input without checking,
potentially resulting in nullptr-dereference if invoked with `nullptr`.
To avoid this possibility, its input is changed to a reference instead.
Call sites are adapted accoringly, extra nullptr-check is added as
needed.
This commit is contained in:
optout
2026-01-26 13:47:37 +01:00
parent db56bcd692
commit fe2d6e25e0
12 changed files with 41 additions and 37 deletions

View File

@@ -2370,7 +2370,10 @@ bool StartIndexBackgroundSync(NodeContext& node)
{
LOCK(::cs_main);
pindex = chainman.m_blockman.LookupBlockIndex(summary.best_block_hash);
if (!index_chain.Contains(pindex)) {
if (!pindex) {
LogWarning("Failed to find block manager entry for best block %s from %s, falling back to genesis for index sync",
summary.best_block_hash.ToString(), summary.name);
} else if (!index_chain.Contains(*pindex)) {
pindex = index_chain.FindFork(pindex);
}
}