diff options
Diffstat (limited to 'Source/WebKit2/Shared/win/PlatformCertificateInfo.cpp')
-rw-r--r-- | Source/WebKit2/Shared/win/PlatformCertificateInfo.cpp | 21 |
1 files changed, 15 insertions, 6 deletions
diff --git a/Source/WebKit2/Shared/win/PlatformCertificateInfo.cpp b/Source/WebKit2/Shared/win/PlatformCertificateInfo.cpp index ade2291..0d1ca36 100644 --- a/Source/WebKit2/Shared/win/PlatformCertificateInfo.cpp +++ b/Source/WebKit2/Shared/win/PlatformCertificateInfo.cpp @@ -65,14 +65,23 @@ PlatformCertificateInfo::PlatformCertificateInfo(const ResourceResponse& respons PCERT_SIMPLE_CHAIN firstSimpleChain = chainContext->rgpChain[0]; for (unsigned i = 0; i < firstSimpleChain->cElement; ++i) { PCCERT_CONTEXT certificateContext = firstSimpleChain->rgpElement[i]->pCertContext; - ::CertDuplicateCertificateContext(certificateContext); - m_certificateChain.append(certificateContext); + PCCERT_CONTEXT certificateContextCopy = ::CertDuplicateCertificateContext(certificateContext); + m_certificateChain.append(certificateContextCopy); } #else // FIXME: WinCairo implementation #endif } +PlatformCertificateInfo::PlatformCertificateInfo(PCCERT_CONTEXT certificateContext) +{ + if (!certificateContext) + return; + + PCCERT_CONTEXT certificateContextCopy = ::CertDuplicateCertificateContext(certificateContext); + m_certificateChain.append(certificateContextCopy); +} + PlatformCertificateInfo::~PlatformCertificateInfo() { clearCertificateChain(); @@ -81,8 +90,8 @@ PlatformCertificateInfo::~PlatformCertificateInfo() PlatformCertificateInfo::PlatformCertificateInfo(const PlatformCertificateInfo& other) { for (size_t i = 0; i < other.m_certificateChain.size(); ++i) { - ::CertDuplicateCertificateContext(other.m_certificateChain[i]); - m_certificateChain.append(other.m_certificateChain[i]); + PCCERT_CONTEXT certificateContextCopy = ::CertDuplicateCertificateContext(other.m_certificateChain[i]); + m_certificateChain.append(certificateContextCopy); } } @@ -90,8 +99,8 @@ PlatformCertificateInfo& PlatformCertificateInfo::operator=(const PlatformCertif { clearCertificateChain(); for (size_t i = 0; i < other.m_certificateChain.size(); ++i) { - ::CertDuplicateCertificateContext(other.m_certificateChain[i]); - m_certificateChain.append(other.m_certificateChain[i]); + PCCERT_CONTEXT certificateContextCopy = ::CertDuplicateCertificateContext(other.m_certificateChain[i]); + m_certificateChain.append(certificateContextCopy); } return *this; } |