The crash, reported in #28986, happens when calling getrawtransaction
for any mempool transaction with verbosity=2
, while pruning, because the rpc calls IsBlockPruned(const CBlockIndex* pblockindex)
, which dereferences pblockindex
without a check.
For ease of backporting this PR fixes it just locally in rpc/rawtransaction.cpp
by moving the check for!blockindex
up so that IsBlockPruned()
will not be called with a nullptr
. We might also want to change IsBlockPruned()
so it doesn’t crash when called with a nullptr
, but I didn’t do that here.
Fixes #28986