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

@@ -71,10 +71,9 @@ BOOST_AUTO_TEST_CASE(basic_tests)
BOOST_CHECK_EQUAL(chain_2[2], nullptr);
// Contains: call with contained & non-contained blocks
BOOST_CHECK(chain_2.Contains(&genesis));
BOOST_CHECK(chain_2.Contains(&bi1));
BOOST_CHECK(!chain_0.Contains(&genesis));
// BOOST_CHECK(!chain_0.Contains(nullptr)); // fail with memory access violation
BOOST_CHECK(chain_2.Contains(genesis));
BOOST_CHECK(chain_2.Contains(bi1));
BOOST_CHECK(!chain_0.Contains(genesis));
// Call with non-tip & tip blocks
BOOST_CHECK_EQUAL(chain_2.Next(&genesis), &bi1);