特定のユーザーデータを暗号化するためにRSAキーを必要とするアプリケーションを開発しています。私はopensslを使用し、すべて正常に動作します。しかし、RSA_newとRSA_generate_key_ex(私は私が作成したすべてのプロパティをリリースしているので、それがあってはならないと思っていた)で、メモリリークを警告しています。ここでRSA_newとRSA_generate_key_exはメモリリークを引き起こす
は、RSAキーを生成するための私のコードです:
BIGNUM e;
BN_init(&e);
BN_set_word(&e, 17);
RSA *rsa = RSA_new(); // Direct leak of 191 bytes in 1 object (RSA_new->RSA_new_method->...)
RAS_generate_key_ex(rsa, 1024, &e, NULL); // Indirect leak of 279 bytes in 1 object (RAS_generate_key_ex->rsa_builtin_keygen...)
EVP_PKEY pkey = EVP_PKEY_new();
EVP_PKEY_set1_RSA(pkey, rsa);
RSA_free(rsa);
BN_free(&e);
MINE_COPY_KEY(pkey); // I copy the pkey to other location at here //
EVP_PKEY_free(pkey);
私は(E、PKEY、RSA)がすでに "RSA_free、EVP_PKEY_free、およびBN_free" がリリースされているが、それはまだ持っている私によって割り当てられたすべてのものを考えました私は( - >RSA_generate_key_ex
とEVP_PKEY pkey = EVP_PKEY_new()
- >EVP_PKEY* pkey = EVP_PKEY_new()
などRAS_generate_key_ex
としてタイプミスを修正した後で)あなたのプログラムを試してみました
Valgrindを使用してメモリリークレポートを表示してみてください。 – AmeyaVS
漏れを示してください。 OpenSSL wikiの[Library Initialization](https://wiki.openssl.org/index.php/Library_Initialization)も参照してください。ライブラリの起動とシャットダウンの方法を示します。 [OpenSSLのメモリリーク?](https://stackoverflow.com/q/34794272/608639)、[OpenSSL関数のメモリリークEVP_PKEY_keygen](https://stackoverflow.com/q/21532371/608639)、[OpenSSL :: SSL_library_init()memory leak](https://stackoverflow.com/q/11759725/608639)、[OpenSSL関数のメモリリークEVP_EncryptFinal_ex](https://stackoverflow.com/q/18503993/608639)on Stack Overflow 。 – jww