aboutsummaryrefslogtreecommitdiff
path: root/src/wallet
diff options
context:
space:
mode:
authormoneromooo-monero <moneromooo-monero@users.noreply.github.com>2016-11-15 19:12:12 +0000
committermoneromooo-monero <moneromooo-monero@users.noreply.github.com>2016-11-16 09:22:05 +0000
commit11ae1873f8cd4e041abf25f08fa4969e75aa8b40 (patch)
tree68d672c0f68ced993c49bdd6fe4a206e02b2db6a /src/wallet
parentwallet2: fill in key image map when importing key images (diff)
downloadmonero-11ae1873f8cd4e041abf25f08fa4969e75aa8b40.tar.xz
wallet2: try all tx keys when scanning a new transaction
The vast majority of transactions will have just one tx pubkey, but a bug with cold wallet signing caused two such keys to be there, with the second one being the real one.
Diffstat (limited to 'src/wallet')
-rw-r--r--src/wallet/wallet2.cpp9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/wallet/wallet2.cpp b/src/wallet/wallet2.cpp
index 1afdffbc0..b4a639324 100644
--- a/src/wallet/wallet2.cpp
+++ b/src/wallet/wallet2.cpp
@@ -631,11 +631,16 @@ void wallet2::process_new_transaction(const cryptonote::transaction& tx, const s
}
// Don't try to extract tx public key if tx has no ouputs
- if (!tx.vout.empty())
+ size_t pk_index = 0;
+ while (!tx.vout.empty())
{
+ // if tx.vout is not empty, we loop through all tx pubkeys
+
tx_extra_pub_key pub_key_field;
- if(!find_tx_extra_field_by_type(tx_extra_fields, pub_key_field))
+ if(!find_tx_extra_field_by_type(tx_extra_fields, pub_key_field, pk_index++))
{
+ if (pk_index > 1)
+ break;
LOG_PRINT_L0("Public key wasn't found in the transaction extra. Skipping transaction " << txid());
if(0 != m_callback)
m_callback->on_skip_transaction(height, tx);