Merge pull request #2492

e457aa51 blockchain: fix crash checking pre-validated txids (moneromooo-monero)
This commit is contained in:
Riccardo Spagni 2017-09-21 12:07:22 +02:00
commit 8cc9b0e739
No known key found for this signature in database
GPG key ID: 55432DF31CCD4FCD

View file

@ -3276,7 +3276,7 @@ leave:
// XXX old code adds miner tx here // XXX old code adds miner tx here
int tx_index = 0; size_t tx_index = 0;
// Iterate over the block's transaction hashes, grabbing each // Iterate over the block's transaction hashes, grabbing each
// from the tx_pool and validating them. Each is then added // from the tx_pool and validating them. Each is then added
// to txs. Keys spent in each are added to <keys> by the double spend check. // to txs. Keys spent in each are added to <keys> by the double spend check.
@ -3358,7 +3358,7 @@ leave:
{ {
// ND: if fast_check is enabled for blocks, there is no need to check // ND: if fast_check is enabled for blocks, there is no need to check
// the transaction inputs, but do some sanity checks anyway. // the transaction inputs, but do some sanity checks anyway.
if (memcmp(&m_blocks_txs_check[tx_index++], &tx_id, sizeof(tx_id)) != 0) if (tx_index >= m_blocks_txs_check.size() || memcmp(&m_blocks_txs_check[tx_index++], &tx_id, sizeof(tx_id)) != 0)
{ {
MERROR_VER("Block with id: " << id << " has at least one transaction (id: " << tx_id << ") with wrong inputs."); MERROR_VER("Block with id: " << id << " has at least one transaction (id: " << tx_id << ") with wrong inputs.");
//TODO: why is this done? make sure that keeping invalid blocks makes sense. //TODO: why is this done? make sure that keeping invalid blocks makes sense.