aboutsummaryrefslogtreecommitdiff
path: root/src/blockchain_db/lmdb
diff options
context:
space:
mode:
authormoneromooo-monero <moneromooo-monero@users.noreply.github.com>2015-12-06 20:48:17 +0000
committermoneromooo-monero <moneromooo-monero@users.noreply.github.com>2015-12-06 21:55:05 +0000
commita98e976f9eabf2112a75347147becc1956ef8d66 (patch)
treec7ee89c4b09ee601a829cd60d76b4c81cc41a694 /src/blockchain_db/lmdb
parentMerge pull request #518 (diff)
downloadmonero-a98e976f9eabf2112a75347147becc1956ef8d66.tar.xz
blockchain_db: fixup missing key images in early DB version
Early DB versions did not store key images for inputs if the transaction spending them had no outputs (ie, all fee). This is not correct, as this would allow these outputs to be double spent. This was fixed in 533acc30eda7792c802ea8b6417917fa99b8bc2b a few months ago, but databases having synced blocks 2021612 and 685498 with a faulty version will be missing those key images in the spent keys database. This code checks for this, and adds those key images if they are missing.
Diffstat (limited to 'src/blockchain_db/lmdb')
-rw-r--r--src/blockchain_db/lmdb/db_lmdb.cpp6
-rw-r--r--src/blockchain_db/lmdb/db_lmdb.h3
2 files changed, 9 insertions, 0 deletions
diff --git a/src/blockchain_db/lmdb/db_lmdb.cpp b/src/blockchain_db/lmdb/db_lmdb.cpp
index 9acb63364..de8066123 100644
--- a/src/blockchain_db/lmdb/db_lmdb.cpp
+++ b/src/blockchain_db/lmdb/db_lmdb.cpp
@@ -2596,4 +2596,10 @@ uint8_t BlockchainLMDB::get_hard_fork_version(uint64_t height) const
return *(const uint8_t*)val_ret.mv_data;
}
+void BlockchainLMDB::fixup()
+{
+ // Always call parent as well
+ BlockchainDB::fixup();
+}
+
} // namespace cryptonote
diff --git a/src/blockchain_db/lmdb/db_lmdb.h b/src/blockchain_db/lmdb/db_lmdb.h
index 98546620b..9e45e26cc 100644
--- a/src/blockchain_db/lmdb/db_lmdb.h
+++ b/src/blockchain_db/lmdb/db_lmdb.h
@@ -266,6 +266,9 @@ private:
void check_open() const;
+ // fix up anything that may be wrong due to past bugs
+ virtual void fixup();
+
MDB_env* m_env;
MDB_dbi m_blocks;