From 7407507f0bdf976c28c30f450bcf9fc7660f080e Mon Sep 17 00:00:00 2001 From: Zach Fox Date: Mon, 4 Jun 2018 14:13:25 -0700 Subject: [PATCH 1/2] Fix MS15574: Tiny memory leak in Wallet.h --- interface/src/commerce/Wallet.cpp | 2 ++ interface/src/commerce/Wallet.h | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/interface/src/commerce/Wallet.cpp b/interface/src/commerce/Wallet.cpp index 982adb4b5e..f427c3c6b0 100644 --- a/interface/src/commerce/Wallet.cpp +++ b/interface/src/commerce/Wallet.cpp @@ -314,6 +314,7 @@ Wallet::Wallet() { auto nodeList = DependencyManager::get(); auto ledger = DependencyManager::get(); auto& packetReceiver = nodeList->getPacketReceiver(); + _passphrase = new QString(""); packetReceiver.registerListener(PacketType::ChallengeOwnership, this, "handleChallengeOwnershipPacket"); packetReceiver.registerListener(PacketType::ChallengeOwnershipRequest, this, "handleChallengeOwnershipPacket"); @@ -359,6 +360,7 @@ void Wallet::clear() { // tell the provider we got nothing updateImageProvider(); _passphrase->clear(); + delete _passphrase; } Wallet::~Wallet() { diff --git a/interface/src/commerce/Wallet.h b/interface/src/commerce/Wallet.h index 8a7d6b8c07..665afd9a23 100644 --- a/interface/src/commerce/Wallet.h +++ b/interface/src/commerce/Wallet.h @@ -78,7 +78,7 @@ private: QByteArray _salt; QByteArray _iv; QByteArray _ckey; - QString* _passphrase { new QString("") }; + QString* _passphrase { nullptr }; bool _isOverridingServer { false }; bool writeWallet(const QString& newPassphrase = QString("")); From 60aff7a224d0dd1bf2c353528cceec911d965b44 Mon Sep 17 00:00:00 2001 From: Zach Fox Date: Mon, 4 Jun 2018 14:41:18 -0700 Subject: [PATCH 2/2] Whoops --- interface/src/commerce/Wallet.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/interface/src/commerce/Wallet.cpp b/interface/src/commerce/Wallet.cpp index f427c3c6b0..f7e749317d 100644 --- a/interface/src/commerce/Wallet.cpp +++ b/interface/src/commerce/Wallet.cpp @@ -360,13 +360,16 @@ void Wallet::clear() { // tell the provider we got nothing updateImageProvider(); _passphrase->clear(); - delete _passphrase; } Wallet::~Wallet() { if (_securityImage) { delete _securityImage; } + + if (_passphrase) { + delete _passphrase; + } } bool Wallet::setPassphrase(const QString& passphrase) {