On Mon, Feb 05, 2007, Lars Uhlmann wrote: > >Please reference http://www.openssl.org/support/faq.html#PROG13 -- > > "I think I've detected a memory leak, is this a bug?" > > > >Thanks! > > It doesn't matter if I call those cleaning functions, the leaks are > still there. > > /* --- cut here --- */ > #include <openssl/ssl.h> > #include <openssl/bio.h> > #include <openssl/err.h> > #include <openssl/engine.h> > #include <openssl/conf.h> > > int main(int argc, char *argv[]) > { > SSL_library_init(); > > //ERR_remove_state(0); > //ERR_free_strings(); > ENGINE_cleanup(); > CONF_modules_unload(1); > > return 1; > } > /* --- cut here --- */ > > valgrind: still reachable: 1,336 bytes in 81 blocks. > What now? >
You haven't included EVP_cleanup() and CRYPTO_cleanup_all_ex_data() mentioned in that FAQ. > My problem is, I dont't know _where to read_ about doing it right. The > large output about blocks allocated from openssl makes it hard to find > my own leaks. That's quite confusing. > > These functions I'm now using. Can someone please look at it and tell me > a little bit more where I should pay attention about freeing things? > > ,----- > | SSL_library_init(); > | > | SSL_CTX* pCtx = SSL_CTX_new(SSLv3_client_method()) > | > | SSL_CTX_use_certificate_chain_file(pCtx, "client.crt") > | SSL_CTX_use_PrivateKey_file(pCtx, "client.key", SSL_FILETYPE_PEM) > | SSL_CTX_check_private_key(pCtx) > | SSL_CTX_load_verify_locations(pCtx, "ca.crt", NULL)) > | > | BIO* pBio = BIO_new_buffer_ssl_connect(pCtx) > | > | BIO_get_ssl(pBio, &pSsl); > | SSL_set_mode(pSsl, SSL_MODE_AUTO_RETRY); > | > | BIO_set_conn_hostname(pBio, HOSTNAME); > | BIO_set_conn_port(pBio, HTTPS_PORT); > | BIO_do_connect(pBio) > | > | SSL_CTX_set_verify(pCtx, VERIFY_SWITCHES, NULL); > | SSL_CTX_set_verify_depth(pCtx, 1); > | > | SSL_get_verify_result(pSsl) > | > | BIO_write(pBio, REQUEST, sizeof(REQUEST)); > | BIO_flush(pBio) > | BIO_gets(pBio, buffer, buffer_size); > | > | SSL_CTX_free(pCtx); > | BIO_free_all(pBio); > `----- > Freeing up should be after you've completed all OpenSSL functions in this example after BIO_free_all(pBio); Steve. -- Dr Stephen N. Henson. Email, S/MIME and PGP keys: see homepage OpenSSL project core developer and freelance consultant. Funding needed! Details on homepage. Homepage: http://www.drh-consultancy.demon.co.uk ______________________________________________________________________ OpenSSL Project http://www.openssl.org User Support Mailing List openssl-users@openssl.org Automated List Manager [EMAIL PROTECTED]