summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorClifford Allan Jansen <cliffjansen@apache.org>2013-11-06 21:59:30 +0000
committerClifford Allan Jansen <cliffjansen@apache.org>2013-11-06 21:59:30 +0000
commitc7b1902c705c9add6608d39d6d46ad59c6021b23 (patch)
tree80d38e391d92ae9e75005ddf4289087de82fd8e8
parentee2b1a57ed083e95fc08f9ddadcfb3395f385592 (diff)
downloadqpid-python-c7b1902c705c9add6608d39d6d46ad59c6021b23.tar.gz
QPID-3502: Windows SslConnector memory error from unititialized data
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1539474 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r--qpid/cpp/src/qpid/client/windows/SslConnector.cpp9
1 files changed, 6 insertions, 3 deletions
diff --git a/qpid/cpp/src/qpid/client/windows/SslConnector.cpp b/qpid/cpp/src/qpid/client/windows/SslConnector.cpp
index 1951401a89..a60ced9059 100644
--- a/qpid/cpp/src/qpid/client/windows/SslConnector.cpp
+++ b/qpid/cpp/src/qpid/client/windows/SslConnector.cpp
@@ -116,8 +116,9 @@ SslConnector::SslConnector(boost::shared_ptr<qpid::sys::Poller> p,
framing::ProtocolVersion ver,
const ConnectionSettings& settings,
ConnectionImpl* cimpl)
- : TCPConnector(p, ver, settings, cimpl), shim(0), poller(p)
+ : TCPConnector(p, ver, settings, cimpl), shim(0), poller(p), certStore(0), cert(0)
{
+ SecInvalidateHandle(&credHandle);
memset(&cred, 0, sizeof(cred));
cred.dwVersion = SCHANNEL_CRED_VERSION;
@@ -149,10 +150,12 @@ SslConnector::SslConnector(boost::shared_ptr<qpid::sys::Poller> p,
SslConnector::~SslConnector()
{
+ if (SecIsValidHandle(&credHandle))
+ ::FreeCredentialsHandle(&credHandle);
if (cert)
::CertFreeCertificateContext(cert);
- ::CertCloseStore(certStore, CERT_CLOSE_STORE_FORCE_FLAG);
- ::FreeCredentialsHandle(&credHandle);
+ if (certStore)
+ ::CertCloseStore(certStore, CERT_CLOSE_STORE_FORCE_FLAG);
}
void SslConnector::connect(const std::string& host, const std::string& port) {