TLS: Fix dangling str() pointers

pull/128/head
Nils Maier 2013-09-23 15:10:53 +02:00
parent 2f1f45bcc5
commit d560bf0e6f
2 changed files with 6 additions and 4 deletions

View File

@ -111,9 +111,10 @@ bool GnuTLSContext::addP12CredentialFile(const std::string& p12file)
{
std::stringstream ss;
BufferedFile(p12file.c_str(), "rb").transfer(ss);
auto datastr = ss.str();
const gnutls_datum_t data = {
(unsigned char*)ss.str().c_str(),
(unsigned int)ss.str().length()
(unsigned char*)datastr.c_str(),
(unsigned int)datastr.length()
};
int err = gnutls_certificate_set_x509_simple_pkcs12_mem(
certCred_, &data, GNUTLS_X509_FMT_DER, "");

View File

@ -135,8 +135,9 @@ bool OpenSSLTLSContext::addP12CredentialFile(const std::string& p12file)
std::stringstream ss;
BufferedFile(p12file.c_str(), "rb").transfer(ss);
void *ptr = const_cast<char*>(ss.str().c_str());
size_t len = ss.str().length();
auto data = ss.str();
void *ptr = const_cast<char*>(data.c_str());
size_t len = data.length();
std::unique_ptr<BIO, bio_deleter> bio(BIO_new_mem_buf(ptr, len));
A2_LOG_DEBUG(fmt("p12 size: %" PRIu64, len));