[block encodings] Avoid fuzz blocking asserts in PartiallyDownloadedBlock

This commit is contained in:
dergoegge 2023-01-16 16:14:16 +01:00
parent 1429f83770
commit 42bd4c7468

View File

@ -52,7 +52,8 @@ ReadStatus PartiallyDownloadedBlock::InitData(const CBlockHeaderAndShortTxIDs& c
if (cmpctblock.shorttxids.size() + cmpctblock.prefilledtxn.size() > MAX_BLOCK_WEIGHT / MIN_SERIALIZABLE_TRANSACTION_WEIGHT)
return READ_STATUS_INVALID;
assert(header.IsNull() && txn_available.empty());
if (!header.IsNull() || !txn_available.empty()) return READ_STATUS_INVALID;
header = cmpctblock.header;
txn_available.resize(cmpctblock.BlockTxCount());
@ -167,14 +168,18 @@ ReadStatus PartiallyDownloadedBlock::InitData(const CBlockHeaderAndShortTxIDs& c
return READ_STATUS_OK;
}
bool PartiallyDownloadedBlock::IsTxAvailable(size_t index) const {
assert(!header.IsNull());
bool PartiallyDownloadedBlock::IsTxAvailable(size_t index) const
{
if (header.IsNull()) return false;
assert(index < txn_available.size());
return txn_available[index] != nullptr;
}
ReadStatus PartiallyDownloadedBlock::FillBlock(CBlock& block, const std::vector<CTransactionRef>& vtx_missing) {
assert(!header.IsNull());
ReadStatus PartiallyDownloadedBlock::FillBlock(CBlock& block, const std::vector<CTransactionRef>& vtx_missing)
{
if (header.IsNull()) return READ_STATUS_INVALID;
uint256 hash = header.GetHash();
block = header;
block.vtx.resize(txn_available.size());