aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVincent Richard <[email protected]>2007-12-23 16:19:39 +0000
committerVincent Richard <[email protected]>2007-12-23 16:19:39 +0000
commitbc0e5a9a48740b1472404de0f4b78ec22fc1a7b2 (patch)
tree2f7362a6bd25b62ce8810b6bea6a9d5f647d6926
parentFixed bug #1755458: The project generator does not exclude the SASL sources. ... (diff)
downloadvmime-bc0e5a9a48740b1472404de0f4b78ec22fc1a7b2.tar.gz
vmime-bc0e5a9a48740b1472404de0f4b78ec22fc1a7b2.zip
Use std::vector<> instead of new[] allocation (avoid memory leaks by using RAII idiom).
-rw-r--r--src/net/tls/TLSSocket.cpp8
-rw-r--r--src/security/cert/X509Certificate.cpp24
2 files changed, 9 insertions, 23 deletions
diff --git a/src/net/tls/TLSSocket.cpp b/src/net/tls/TLSSocket.cpp
index cc922796..fe5f2446 100644
--- a/src/net/tls/TLSSocket.cpp
+++ b/src/net/tls/TLSSocket.cpp
@@ -319,21 +319,19 @@ ref <security::cert::certificateChain> TLSSocket::getPeerCertificates() const
gnutls_x509_crt_export(x509Certs[i],
GNUTLS_X509_FMT_DER, NULL, &dataSize);
- byte_t* data = new byte_t[dataSize];
+ std::vector <byte_t> data(dataSize);
gnutls_x509_crt_export(x509Certs[i],
- GNUTLS_X509_FMT_DER, data, &dataSize);
+ GNUTLS_X509_FMT_DER, &data[0], &dataSize);
ref <security::cert::X509Certificate> cert =
- security::cert::X509Certificate::import(data, dataSize);
+ security::cert::X509Certificate::import(&data[0], dataSize);
if (cert != NULL)
certs.push_back(cert);
else
error = true;
- delete [] data;
-
gnutls_x509_crt_deinit(x509Certs[i]);
}
diff --git a/src/security/cert/X509Certificate.cpp b/src/security/cert/X509Certificate.cpp
index da1322f2..ff58541c 100644
--- a/src/security/cert/X509Certificate.cpp
+++ b/src/security/cert/X509Certificate.cpp
@@ -128,19 +128,11 @@ void X509Certificate::write
gnutls_x509_crt_export(m_data->cert, fmt, NULL, &dataSize);
- byte_t* data = new byte_t[dataSize];
+ std::vector <byte_t> data(dataSize);
- gnutls_x509_crt_export(m_data->cert, fmt, data, &dataSize);
+ gnutls_x509_crt_export(m_data->cert, fmt, &data[0], &dataSize);
- try
- {
- os.write(reinterpret_cast <utility::stream::value_type*>(data), dataSize);
- }
- catch (...)
- {
- delete [] data;
- throw;
- }
+ os.write(reinterpret_cast <utility::stream::value_type*>(&data[0]), dataSize);
}
@@ -212,21 +204,17 @@ const byteArray X509Certificate::getFingerprint(const DigestAlgorithm algo) cons
gnutls_x509_crt_get_fingerprint
(m_data->cert, galgo, NULL, &bufferSize);
- byte_t* buffer = new byte_t[bufferSize];
+ std::vector <byte_t> buffer(bufferSize);
if (gnutls_x509_crt_get_fingerprint
- (m_data->cert, galgo, buffer, &bufferSize) == 0)
+ (m_data->cert, galgo, &buffer[0], &bufferSize) == 0)
{
byteArray res;
- res.insert(res.end(), buffer, buffer + bufferSize);
-
- delete [] buffer;
+ res.insert(res.end(), &buffer[0], &buffer[0] + bufferSize);
return res;
}
- delete [] buffer;
-
return byteArray();
}