I'm getting some memory leaks when I use OpenSSL. I was not able to get rid
of these leaks, even when I use EVP_cleanup() and ERR_free_strings() at the
end of my program.
Memory Leak 1. PEM_read_PrivateKey()
=====================================
EVP_PKEY* key = PEM_read_PrivateKey(fp, NULL, 0, NULL);
...
EVP_PKEY_free(key);
Valgrind reports:
==27769== 24 bytes in 1 blocks are still reachable in loss record 2 of
20
==27769== at 0x4A05809: malloc (vg_replace_malloc.c:149)
==27769== by 0x3C3C6DAD41: CRYPTO_malloc (in
/lib64/libcrypto.so.0.9.8e)
==27769== by 0x3C3C65B565: (within /lib64/libcrypto.so.0.9.8e)
==27769== by 0x3C3C65B98A: (within /lib64/libcrypto.so.0.9.8e)
==27769== by 0x3C3C66F9B3: RSA_new_method (in
/lib64/libcrypto.so.0.9.8e)
==27769== by 0x3C3C66F33C: (within /lib64/libcrypto.so.0.9.8e)
==27769== by 0x3C3C692EA4: (within /lib64/libcrypto.so.0.9.8e)
==27769== by 0x3C3C696004: ASN1_item_ex_d2i (in
/lib64/libcrypto.so.0.9.8e)
==27769== by 0x3C3C6960F3: ASN1_item_d2i (in
/lib64/libcrypto.so.0.9.8e)
==27769== by 0x3C3C68FC0C: d2i_PrivateKey (in
/lib64/libcrypto.so.0.9.8e)
==27769== by 0x3C3C6A10B9: PEM_read_bio_PrivateKey (in
/lib64/libcrypto.so.0.9.8e)
==27769== by 0x3C3C6A1300: PEM_read_PrivateKey (in
/lib64/libcrypto.so.0.9.8e)
Memory Leak 2. SSL_library_init()
=================================
Valgrind reports:
==27769== 24 bytes in 1 blocks are still reachable in loss record 6 of
20
==27769== at 0x4A05809: malloc (vg_replace_malloc.c:149)
==27769== by 0x3C3C6DAD41: CRYPTO_malloc (in
/lib64/libcrypto.so.0.9.8e)
==27769== by 0x3C3C65B565: (within /lib64/libcrypto.so.0.9.8e)
==27769== by 0x3C3C65BB3B: (within /lib64/libcrypto.so.0.9.8e)
==27769== by 0x3C3C6BFBFA: COMP_zlib (in /lib64/libcrypto.so.0.9.8e)
==27769== by 0x3C3CA31D7F: (within /lib64/libssl.so.0.9.8e)
==27769== by 0x3C3CA31F48: SSL_COMP_get_compression_methods (in
/lib64/libssl.so.0.9.8e)
==27769== by 0x3C3CA37784: SSL_library_init (in
/lib64/libssl.so.0.9.8e)
Memory Leak 3. HMAC_Init()
==========================
HMAC_CTX hm;
HMAC_Init(&hm, ...);
HMAC_Update(&hm, ...);
HMAC_Final(&hm, ...);
...
HMAC_cleanup(&hm);
Valgrind reports:
==31996== at 0x4A05809: malloc (vg_replace_malloc.c:149)
==31996== by 0x3C3C6DAD41: CRYPTO_malloc (in
/lib64/libcrypto.so.0.9.8e)
==31996== by 0x3C3C6D8A1D: EVP_DigestInit_ex (in
/lib64/libcrypto.so.0.9.8e)
==31996== by 0x3C3C6EB36B: HMAC_Init_ex (in
/lib64/libcrypto.so.0.9.8e)
______________________________________________________________________
OpenSSL Project http://www.openssl.org
User Support Mailing List [email protected]
Automated List Manager [email protected]