David Brock wrote: > I'm still trying to track down some memory leaks and using the following > code I'm see leaks in the OpenSSL library. Could some one please let me > know if I'm making these calls incorrectly, or if there are any patches > (other then upgrading to 0.9.8) that can be applied to fix the leaks. We > are currently using 0.9.7g. > void > process(EVP_PKEY **pubKey) > { > X509 *rootCert = NULL; > FILE *fp; > BIO *fileBio = NULL; > fp = > fopen("/home/dbrock/src/GMSModule/certs/production/cacert.pem","r"); > if (fp == NULL) > { > printf("Error could not open root cert\n"); > return -1; > } > fileBio = BIO_new(BIO_s_file()); > BIO_set_fp(fileBio,fp,BIO_NOCLOSE);
Why don't you simply do a BIO *fileBio = BIO_new_file("/home/dbrock/src/GMSModule/certs/production/cacert.pem","r"); if (!fileBio) ... > rootCert = PEM_read_bio_X509(fileBio,NULL, NULL, NULL); > if (rootCert == NULL) > { > printf("Error could not open root cert\n"); > return -1; > } > /* Pull out the public key */ > if ((*pubKey = X509_get_pubkey(rootCert)) == NULL) > { > printf("Error could not get public key\n"); > return -1; > } > BIO_free(fileBio); > fileBio = NULL; > (void) fclose(fp); > fp = NULL; > OPENSSL_free(rootCert); X509_free(rootcert); > return 0; > } > > int > main (int argc, char **argv) > { > EVP_PKEY *pubKey = NULL; > process(&pubKey); > OPENSSL_free(pubKey); EVP_PKEY_free(pubkey); > return 0; > } Bye Goetz -- DMCA: The greed of the few outweighs the freedom of the many
smime.p7s
Description: S/MIME Cryptographic Signature