aboutsummaryrefslogtreecommitdiff
path: root/src/cryptonote_core/blockchain.cpp
diff options
context:
space:
mode:
authormoneromooo-monero <moneromooo-monero@users.noreply.github.com>2017-10-12 13:27:20 +0100
committermoneromooo-monero <moneromooo-monero@users.noreply.github.com>2017-10-12 13:27:20 +0100
commit5db433b3f7a093d692d5a5ac5ea6974cf9400872 (patch)
treea34d4f5855db17ce80795e596382b5f7031a054e /src/cryptonote_core/blockchain.cpp
parentMerge pull request #2548 (diff)
downloadmonero-5db433b3f7a093d692d5a5ac5ea6974cf9400872.tar.xz
blockchain: avoid exceptions in output verification
This can happen if we get a bad tx, so let's not spam the log.
Diffstat (limited to 'src/cryptonote_core/blockchain.cpp')
-rw-r--r--src/cryptonote_core/blockchain.cpp14
1 files changed, 12 insertions, 2 deletions
diff --git a/src/cryptonote_core/blockchain.cpp b/src/cryptonote_core/blockchain.cpp
index 3e0ffc409..247387efe 100644
--- a/src/cryptonote_core/blockchain.cpp
+++ b/src/cryptonote_core/blockchain.cpp
@@ -188,7 +188,12 @@ bool Blockchain::scan_outputkeys_for_indexes(size_t tx_version, const txin_to_ke
{
try
{
- m_db->get_output_key(tx_in_to_key.amount, absolute_offsets, outputs);
+ m_db->get_output_key(tx_in_to_key.amount, absolute_offsets, outputs, true);
+ if (absolute_offsets.size() != outputs.size())
+ {
+ MERROR_VER("Output does not exist! amount = " << tx_in_to_key.amount);
+ return false;
+ }
}
catch (...)
{
@@ -208,7 +213,12 @@ bool Blockchain::scan_outputkeys_for_indexes(size_t tx_version, const txin_to_ke
add_offsets.push_back(absolute_offsets[i]);
try
{
- m_db->get_output_key(tx_in_to_key.amount, add_offsets, add_outputs);
+ m_db->get_output_key(tx_in_to_key.amount, add_offsets, add_outputs, true);
+ if (add_offsets.size() != add_outputs.size())
+ {
+ MERROR_VER("Output does not exist! amount = " << tx_in_to_key.amount);
+ return false;
+ }
}
catch (...)
{