}
const auto ocsp_resp_size = data->second.size();
+ /* the behaviour is alas different in 3.6.0 because of a regression introduced in b1b4b154fd389ac6254d49cfb11aee36c1c51b84:
+ the value passed to SSL_set_tlsext_status_ocsp_resp() is not freed in 3.6.0 as it is in all others OpenSSL versions.
+ See https://github.com/openssl/openssl/issues/28888 */
#if OPENSSL_VERSION_NUMBER != 0x30600000L
/* we need to allocate a copy because OpenSSL will free the pointer passed to SSL_set_tlsext_status_ocsp_resp() */
void* ocsp_resp = OPENSSL_malloc(ocsp_resp_size);
memcpy(ocsp_resp, data->second.data(), ocsp_resp_size);
#else
- /* no longer freed after b1b4b154fd389ac6254d49cfb11aee36c1c51b84 3.6.0, https://github.com/openssl/openssl/issues/28888 */
- // NOLINTNEXTLINE(cppcoreguidelines-pro-type-const-cast): the parameter is no longer freed but the parameter is not marked const..
+ // NOLINTNEXTLINE(cppcoreguidelines-pro-type-const-cast): the parameter is not freed in this version (3.6.0, see above) but the parameter is not marked const.
void* ocsp_resp = const_cast<char*>(data->second.data());
#endif
SSL_set_tlsext_status_ocsp_resp(ssl, ocsp_resp, ocsp_resp_size);