diff --git a/src/blockencodings.cpp b/src/blockencodings.cpp index ef27877c6..95966ab4f 100644 --- a/src/blockencodings.cpp +++ b/src/blockencodings.cpp @@ -53,7 +53,10 @@ ReadStatus PartiallyDownloadedBlock::InitData(const CBlockHeaderAndShortTxIDs& c if (cmpctblock.shorttxids.size() + cmpctblock.prefilledtxn.size() > MAX_BLOCK_BASE_SIZE / MIN_TRANSACTION_BASE_SIZE) return READ_STATUS_INVALID; - assert(header.IsNull() && txn_available.empty()); + if (!header.IsNull() || !txn_available.empty()) { + return READ_STATUS_FAILED; + } + header = cmpctblock.header; txn_available.resize(cmpctblock.BlockTxCount()); @@ -170,13 +173,19 @@ ReadStatus PartiallyDownloadedBlock::InitData(const CBlockHeaderAndShortTxIDs& c } bool PartiallyDownloadedBlock::IsTxAvailable(size_t index) const { - assert(!header.IsNull()); + if (header.IsNull()) { + return false; + } + assert(index < txn_available.size()); return txn_available[index] ? true : false; } ReadStatus PartiallyDownloadedBlock::FillBlock(CBlock& block, const std::vector& vtx_missing) { - assert(!header.IsNull()); + if (header.IsNull()) { + return READ_STATUS_INVALID; + } + uint256 hash = header.GetHash(); block = header; block.vtx.resize(txn_available.size());