diff options
| author | xiphon <xiphon@protonmail.com> | 2019-05-28 15:46:26 +0000 |
|---|---|---|
| committer | xiphon <xiphon@protonmail.com> | 2019-05-28 15:46:26 +0000 |
| commit | 1cffa8b68d83a77d3e34ecf86b9fd98a2af4a635 (patch) | |
| tree | d431a861d3541ccb704581e2c4c18d8988f89932 /src | |
| parent | c286c7e5a8e67d769bc9054f661ab742a8b1a5ba (diff) | |
| download | monzero-gui-1cffa8b68d83a77d3e34ecf86b9fd98a2af4a635.tar.gz monzero-gui-1cffa8b68d83a77d3e34ecf86b9fd98a2af4a635.tar.xz monzero-gui-1cffa8b68d83a77d3e34ecf86b9fd98a2af4a635.zip | |
WalletManager: fix crash on null/dangling pointer dereference
Diffstat (limited to 'src')
| -rw-r--r-- | src/libwalletqt/WalletManager.cpp | 11 | ||||
| -rw-r--r-- | src/libwalletqt/WalletManager.h | 2 |
2 files changed, 10 insertions, 3 deletions
diff --git a/src/libwalletqt/WalletManager.cpp b/src/libwalletqt/WalletManager.cpp index 141ae97a..494c9575 100644 --- a/src/libwalletqt/WalletManager.cpp +++ b/src/libwalletqt/WalletManager.cpp @@ -376,8 +376,14 @@ double WalletManager::miningHashRate() const bool WalletManager::isMining() const { - if(!m_currentWallet->connected()) - return false; + { + QMutexLocker locker(&m_mutex); + if (m_currentWallet == nullptr || !m_currentWallet->connected()) + { + return false; + } + } + return m_pimpl->isMining(); } @@ -412,6 +418,7 @@ QString WalletManager::resolveOpenAlias(const QString &address) const } bool WalletManager::parse_uri(const QString &uri, QString &address, QString &payment_id, uint64_t &amount, QString &tx_description, QString &recipient_name, QVector<QString> &unknown_parameters, QString &error) const { + QMutexLocker locker(&m_mutex); if (m_currentWallet) return m_currentWallet->parse_uri(uri, address, payment_id, amount, tx_description, recipient_name, unknown_parameters, error); return false; diff --git a/src/libwalletqt/WalletManager.h b/src/libwalletqt/WalletManager.h index c81fef1c..2e9f9753 100644 --- a/src/libwalletqt/WalletManager.h +++ b/src/libwalletqt/WalletManager.h @@ -209,7 +209,7 @@ private: explicit WalletManager(QObject *parent = 0); static WalletManager * m_instance; Monero::WalletManager * m_pimpl; - QMutex m_mutex; + mutable QMutex m_mutex; QPointer<Wallet> m_currentWallet; QWaitCondition m_cond_pass; |
