Fixed invalid reuse of cert with gnutls_x509_crt_import (thanks to Benjamin Biron).

This commit is contained in:
Vincent Richard 2006-12-08 13:07:06 +00:00
parent 58594efcd8
commit f95b91c547

View File

@ -94,19 +94,21 @@ ref <X509Certificate> X509Certificate::import(utility::inputStream& is)
ref <X509Certificate> X509Certificate::import ref <X509Certificate> X509Certificate::import
(const byte_t* data, const unsigned int length) (const byte_t* data, const unsigned int length)
{ {
ref <X509Certificate> cert = vmime::create <X509Certificate>();
gnutls_datum buffer; gnutls_datum buffer;
buffer.data = const_cast <byte_t*>(data); buffer.data = const_cast <byte_t*>(data);
buffer.size = length; buffer.size = length;
// Try DER format // Try DER format
if (gnutls_x509_crt_import(cert->m_data->cert, &buffer, GNUTLS_X509_FMT_DER) >= 0) ref <X509Certificate> derCert = vmime::create <X509Certificate>();
return cert;
if (gnutls_x509_crt_import(derCert->m_data->cert, &buffer, GNUTLS_X509_FMT_DER) >= 0)
return derCert;
// Try PEM format // Try PEM format
if (gnutls_x509_crt_import(cert->m_data->cert, &buffer, GNUTLS_X509_FMT_PEM) >= 0) ref <X509Certificate> pemCert = vmime::create <X509Certificate>();
return cert;
if (gnutls_x509_crt_import(pemCert->m_data->cert, &buffer, GNUTLS_X509_FMT_PEM) >= 0)
return pemCert;
return NULL; return NULL;
} }