diff options
author | MeshCollider <dobsonsa68@gmail.com> | 2018-10-13 16:57:15 +0900 |
---|---|---|
committer | MeshCollider <dobsonsa68@gmail.com> | 2018-11-10 15:07:20 +1300 |
commit | b4f6e58ca5a74225b6db9deb3ffe1ce3ab19a790 (patch) | |
tree | 5dc42277768cbbac45dda89a88e58145da9348f0 | |
parent | be992701b018f256db6d64786624be4cb60d8975 (diff) |
Better error message for user when corrupt wallet unlock fails
-rw-r--r-- | src/qt/askpassphrasedialog.cpp | 17 | ||||
-rw-r--r-- | src/wallet/crypter.cpp | 2 |
2 files changed, 10 insertions, 9 deletions
diff --git a/src/qt/askpassphrasedialog.cpp b/src/qt/askpassphrasedialog.cpp index a0270daf99..821c23c467 100644 --- a/src/qt/askpassphrasedialog.cpp +++ b/src/qt/askpassphrasedialog.cpp @@ -152,14 +152,15 @@ void AskPassphraseDialog::accept() } } break; case Unlock: - if(!model->setWalletLocked(false, oldpass)) - { - QMessageBox::critical(this, tr("Wallet unlock failed"), - tr("The passphrase entered for the wallet decryption was incorrect.")); - } - else - { - QDialog::accept(); // Success + try { + if (!model->setWalletLocked(false, oldpass)) { + QMessageBox::critical(this, tr("Wallet unlock failed"), + tr("The passphrase entered for the wallet decryption was incorrect.")); + } else { + QDialog::accept(); // Success + } + } catch (const std::runtime_error& e) { + QMessageBox::critical(this, tr("Wallet unlock failed"), e.what()); } break; case Decrypt: diff --git a/src/wallet/crypter.cpp b/src/wallet/crypter.cpp index 729e4e39b0..175cf1c0a4 100644 --- a/src/wallet/crypter.cpp +++ b/src/wallet/crypter.cpp @@ -202,7 +202,7 @@ bool CCryptoKeyStore::Unlock(const CKeyingMaterial& vMasterKeyIn) if (keyPass && keyFail) { LogPrintf("The wallet is probably corrupted: Some keys decrypt but not all.\n"); - assert(false); + throw std::runtime_error("Error unlocking wallet: some keys decrypt but not all. Your wallet file may be corrupt."); } if (keyFail || !keyPass) return false; |