nicolas sitbon wrote:
Hi, I'm currently developping an application using libcrypto, I find
some memory leak with valgrind (please don't say me to compile with
-DPURIFY, I know that and in fact, my problem is not uninitialized data,
but rather memory leak) :
==26823== 1,552 (168 direct, 1,384 indirect) bytes in 1 blocks are
definitely lost in loss record 1 of 2
==26823== at 0x4C22FAB: malloc (vg_replace_malloc.c:207)
==26823== by 0x40ACB2: CRYPTO_malloc (in /home/nicolas/admkey)
==26823== by 0x41CBBA: RSA_new_method (in /home/nicolas/admkey)
==26823== by 0x41CECC: rsa_cb (in /home/nicolas/admkey)
...SNIP...
==26823== 1,384 bytes in 16 blocks are indirectly lost in loss record 2 of 2
==26823== at 0x4C22FAB: malloc (vg_replace_malloc.c:207)
==26823== by 0x40ACB2: CRYPTO_malloc (in /home/nicolas/admkey)
==26823== by 0x413F37: BN_new (in /home/nicolas/admkey)
...SNIP...
I call PEM_read_RSAPrivateKey() as you can see
And did you get a valid "RSA *" object returned ?
Did you call "RSA_free()" with that returned object (before starting
your cleanup) ?
If this proves to be the issue: The OpenSSL library cleanup is there to
clean up objects that have been created for internal use within the
library. Many of these objects do not come into direct use by
application code during normal running, so there is a clear case for
OpenSSL cleanup code "undoing" what it did in this regard. Objects
which the application created and held onto are not managed in the same
way, the application is expected to manage their lifecycle and
explicitly call their respective destruction functions.
I've also downloaded the latest snapshot,
but it seems that this problem is not currently fix.
I have also check in the documentation of PEM_read_RSAPrivateKey(), but
nothing says how to free this memory.
Since it is an "RSA *" then did you try "man RSA_free" ?
Darryl
______________________________________________________________________
OpenSSL Project http://www.openssl.org
Development Mailing List [email protected]
Automated List Manager [EMAIL PROTECTED]