X-Git-Url: http://Server1/repobrowser/?a=blobdiff_plain;f=source%2Fcarddav%2Fcarddav.cpp;h=52ae03aa49eea14e7794553691f726e36290de01;hb=274f4cd4b1b656e0ad4119e3969c9ccf59a2f209;hp=5276cb760fbccf835f12c50506fd237f512137fe;hpb=71fe3c25d1299666d5752df3e3263b03fa85594e;p=xestiaab%2F.git diff --git a/source/carddav/carddav.cpp b/source/carddav/carddav.cpp index 5276cb7..52ae03a 100644 --- a/source/carddav/carddav.cpp +++ b/source/carddav/carddav.cpp @@ -60,9 +60,14 @@ size_t CardDAV::WritebackFunc(char *ptr, size_t size, size_t nmemb, wxString *st std::string CertName; if (TLSInfo->internals != nullptr && TLSCode == CURLE_OK){ + + // Free the previous certificate data. + + CertFreeCertificateContext(CertificateData); + PCtxtHandle SSLHandle = (PCtxtHandle)TLSInfo->internals; SECURITY_STATUS GetData = QueryContextAttributes(SSLHandle, SECPKG_ATTR_REMOTE_CERT_CONTEXT, &CertificateData); - //QueryContextAttributesA(TLSInfo->internals, SECPKG_); + } #endif @@ -524,6 +529,14 @@ void CardDAV::SetConnectionObject(CURL *ConnectionObjectIn){ PCCERT_CONTEXT CardDAV::GetCertificateContextPointer(){ + // Check that the PCCERT_CONTEXT has an address + // other than NULL. Return nullptr if this is the + // case. + + if (CertificateData == NULL){ + return NULL; + } + // Get the certificate data. return CertificateData; @@ -532,6 +545,15 @@ PCCERT_CONTEXT CardDAV::GetCertificateContextPointer(){ CERT_CONTEXT CardDAV::GetCertificateContext(){ + // Check that the PCCERT_CONTEXT has an address + // other than NULL. Return nullptr if this is the + // case. + + if (CertificateData == NULL){ + CERT_CONTEXT EmptyCertificateData = { 0 }; + return EmptyCertificateData; + } + // Get the certificate data. return *CertificateData;