aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMikhail Mitkevichl <mim@exante.eu>2018-04-21 23:25:01 +0300
committerMikhail Mitkevichl <mim@exante.eu>2018-04-21 23:25:01 +0300
commit5bd7f760e9318452f662bcbdb1b8ab7d393055d2 (patch)
tree39814b52f1b6a47bcdf6cc7a3d3ddad55b7b5cd5 /src
parentMerge pull request #3606 (diff)
downloadmonero-5bd7f760e9318452f662bcbdb1b8ab7d393055d2.tar.xz
import_multisig_info: fix sanity check crash in detach_blockchain
Diffstat (limited to 'src')
-rw-r--r--src/wallet/wallet2.cpp7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/wallet/wallet2.cpp b/src/wallet/wallet2.cpp
index 3883de6d9..bbd3108d3 100644
--- a/src/wallet/wallet2.cpp
+++ b/src/wallet/wallet2.cpp
@@ -2421,7 +2421,7 @@ void wallet2::detach_blockchain(uint64_t height)
// size 1 2 3 4 5 6 7 8 9
// block 0 1 2 3 4 5 6 7 8
// C
- THROW_WALLET_EXCEPTION_IF(height <= m_checkpoints.get_max_height() && m_blockchain.size() > m_checkpoints.get_max_height(),
+ THROW_WALLET_EXCEPTION_IF(height < m_blockchain.offset() && m_blockchain.size() > m_blockchain.offset(),
error::wallet_internal_error, "Daemon claims reorg below last checkpoint");
size_t transfers_detached = 0;
@@ -3875,6 +3875,11 @@ void wallet2::load(const std::string& wallet_, const epee::wipeable_string& pass
void wallet2::trim_hashchain()
{
uint64_t height = m_checkpoints.get_max_height();
+
+ for (const transfer_details &td: m_transfers)
+ if (td.m_block_height < height)
+ height = td.m_block_height;
+
if (!m_blockchain.empty() && m_blockchain.size() == m_blockchain.offset())
{
MINFO("Fixing empty hashchain");