diff --git a/src/LibgnutlsTLSContext.cc b/src/LibgnutlsTLSContext.cc index 63ae06de..ac0ae6d7 100644 --- a/src/LibgnutlsTLSContext.cc +++ b/src/LibgnutlsTLSContext.cc @@ -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, ""); diff --git a/src/LibsslTLSContext.cc b/src/LibsslTLSContext.cc index 6f59a5d4..e358b9cc 100644 --- a/src/LibsslTLSContext.cc +++ b/src/LibsslTLSContext.cc @@ -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(ss.str().c_str()); - size_t len = ss.str().length(); + auto data = ss.str(); + void *ptr = const_cast(data.c_str()); + size_t len = data.length(); std::unique_ptr bio(BIO_new_mem_buf(ptr, len)); A2_LOG_DEBUG(fmt("p12 size: %" PRIu64, len));