Skip to content

Commit

Permalink
Merge bitcoin-core/gui#773: Check for private keys disabled before at…
Browse files Browse the repository at this point in the history
…tempting unlock

517c7f9 gui: Check for private keys disabled before attempting unlock (Andrew Chow)

Pull request description:

  Before trying to unlock a wallet, first check if it has private keys disabled. If so, there is no need to unlock.

  Note that such wallets are not expected to occur in typical usage. However bugs in previous versions allowed such wallets to be created, and so we need to handle them.

  Fixes dashpay#772

  For some additional context, see dashpay#631

ACKs for top commit:
  hebasto:
    ACK 517c7f9, I have reviewed the code and it looks OK.
  BrandonOdiwuor:
    ACK 517c7f9

Tree-SHA512: c92aa34344d04667b70b059d2aa0a1da999cb7239cd1413f3009781aa82379f309ff9808d7dc91d385e2c8afe2abda3564568e2091ef833b1536ebfcf80f7c3c
  • Loading branch information
hebasto committed Feb 12, 2024
2 parents e3c1711 + 517c7f9 commit c6398c6
Showing 1 changed file with 7 additions and 0 deletions.
7 changes: 7 additions & 0 deletions src/qt/walletmodel.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -448,6 +448,13 @@ void WalletModel::unsubscribeFromCoreSignals()
// WalletModel::UnlockContext implementation
WalletModel::UnlockContext WalletModel::requestUnlock()
{
// Bugs in earlier versions may have resulted in wallets with private keys disabled to become "encrypted"
// (encryption keys are present, but not actually doing anything).
// To avoid issues with such wallets, check if the wallet has private keys disabled, and if so, return a context
// that indicates the wallet is not encrypted.
if (m_wallet->privateKeysDisabled()) {
return UnlockContext(this, /*valid=*/true, /*relock=*/false);
}
bool was_locked = getEncryptionStatus() == Locked;
if(was_locked)
{
Expand Down

0 comments on commit c6398c6

Please sign in to comment.