Only ignore runtime errors caused by failed note decryption

This commit is contained in:
Jack Grigg 2016-10-14 09:03:59 -05:00
parent ddea44a27e
commit a581fe2aae
No known key found for this signature in database
GPG Key ID: 6A6914DAFBEA00DA
2 changed files with 13 additions and 2 deletions

View File

@ -425,13 +425,19 @@ TEST(wallet_tests, FindMyNotes) {
CWallet wallet;
auto sk = libzcash::SpendingKey::random();
wallet.AddSpendingKey(sk);
auto sk2 = libzcash::SpendingKey::random();
wallet.AddSpendingKey(sk2);
auto wtx = GetValidReceive(sk, 10, true);
auto note = GetNote(sk, wtx, 0, 1);
auto nullifier = note.nullifier(sk);
auto noteMap = wallet.FindMyNotes(wtx);
EXPECT_EQ(0, noteMap.size());
wallet.AddSpendingKey(sk);
noteMap = wallet.FindMyNotes(wtx);
EXPECT_EQ(2, noteMap.size());
JSOutPoint jsoutpt {wtx.GetHash(), 0, 1};

View File

@ -1187,7 +1187,12 @@ mapNoteData_t CWallet::FindMyNotes(const CTransaction& tx) const
noteData.insert(std::make_pair(jsoutpt, nd));
}
break;
} catch (const std::runtime_error &) {
} catch (const std::runtime_error &err) {
if (memcmp("Could not decrypt message", err.what(), 25) != 0) {
// Unexpected failure
LogPrintf("FindMyNotes(): Unexpected runtime error while testing decrypt:\n");
LogPrintf("%s\n", err.what());
} // else
// Couldn't decrypt with this decryptor
} catch (const std::exception &exc) {
// Unexpected failure