diff --git a/src/wallet/wallet.cpp b/src/wallet/wallet.cpp index 1a073153ef81..6a941af05ca2 100644 --- a/src/wallet/wallet.cpp +++ b/src/wallet/wallet.cpp @@ -3910,9 +3910,8 @@ bool CWallet::IsLocked(bool fForMixing) const if (!IsCrypted()) return false; - if(!fForMixing && fOnlyMixingAllowed) return true; - LOCK(cs_wallet); + if (!fForMixing && fOnlyMixingAllowed) return true; return vMasterKey.empty(); } @@ -3921,15 +3920,17 @@ bool CWallet::Lock(bool fAllowMixing) if (!IsCrypted()) return false; - if(!fAllowMixing) { + { LOCK(cs_wallet); - if (!vMasterKey.empty()) { - memory_cleanse(vMasterKey.data(), vMasterKey.size() * sizeof(decltype(vMasterKey)::value_type)); - vMasterKey.clear(); + if (!fAllowMixing) { + if (!vMasterKey.empty()) { + memory_cleanse(vMasterKey.data(), vMasterKey.size() * sizeof(decltype(vMasterKey)::value_type)); + vMasterKey.clear(); + } } + fOnlyMixingAllowed = fAllowMixing; } - fOnlyMixingAllowed = fAllowMixing; NotifyStatusChanged(this); return true; } diff --git a/src/wallet/wallet.h b/src/wallet/wallet.h index b336b3cef90d..059e7712c6c4 100644 --- a/src/wallet/wallet.h +++ b/src/wallet/wallet.h @@ -290,7 +290,7 @@ class CWallet final : public WalletStorage, public interfaces::Chain::Notificati CKeyingMaterial vMasterKey GUARDED_BY(cs_wallet); //! if fOnlyMixingAllowed is true, only mixing should be allowed in unlocked wallet - bool fOnlyMixingAllowed{false}; + bool fOnlyMixingAllowed GUARDED_BY(cs_wallet){false}; bool Unlock(const CKeyingMaterial& vMasterKeyIn, bool fForMixingOnly = false);