openssl: Prevent OpenSSL from using posix_memalign() if LD is enabled

The leak detective doesn't wrap this function and calling the original
causes unknown memory frees and even segmentation faults.  This is now
triggered with OpenSSL 4 as the implementation of ECP256 uses
OPENSSL_aligned_alloc_array().

Setting a custom memory functions forces OpenSSL to implement aligned
allocations internally, using the registered allocation function.
This commit is contained in:
Tobias Brunner
2026-05-06 10:46:43 +02:00
parent 374b17fe88
commit 8ff3238027
@@ -777,6 +777,13 @@ PLUGIN_DEFINE(openssl)
private_openssl_plugin_t *this;
int fips_mode;
/* prevent OpenSSL from using posix_memalign() if leak detective is enabled,
* which doesn't wrap it */
if (lib->leak_detective)
{
CRYPTO_set_mem_functions((void*)malloc, (void*)realloc, (void*)free);
}
fips_mode = lib->settings->get_int(lib->settings,
"%s.plugins.openssl.fips_mode", FIPS_MODE, lib->ns);
#ifdef OPENSSL_FIPS