From: Ankit Shah Date: Thu, 29 Jun 2017 20:24:19 +0000 (-0700) Subject: Removing memory leaks in rsa setter test X-Git-Tag: v2017.07.03.00~18 X-Git-Url: http://plrg.eecs.uci.edu/git/?p=folly.git;a=commitdiff_plain;h=4f8bbf577c7034dd0469e804e23780fdd0465541;hp=0f5638fe81b9dafd9a222bc5e9b1047692e0326e Removing memory leaks in rsa setter test Summary: Using RSA free and removing unnecessary Bignum allocations to prevent test failures due to memory leaks Reviewed By: anirudhvr Differential Revision: D5348232 fbshipit-source-id: 7c76f3dced26a3080fc82b4bacc06bc0768d6fda --- diff --git a/CMakeLists.txt b/CMakeLists.txt index 7d476c5c..be37adda 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -443,6 +443,7 @@ if (BUILD_TESTS) TEST constexpr_test SOURCES ConstexprTest.cpp TEST libgen-test SOURCES LibgenTest.cpp TEST time-test SOURCES TimeTest.cpp + TEST openssl_portability_test SOURCES OpenSSLPortabilityTest.cpp DIRECTORY ssl/test/ TEST openssl_hash_test SOURCES OpenSSLHashTest.cpp diff --git a/folly/portability/test/OpenSSLPortabilityTest.cpp b/folly/portability/test/OpenSSLPortabilityTest.cpp index bb95a755..7c1bbf87 100644 --- a/folly/portability/test/OpenSSLPortabilityTest.cpp +++ b/folly/portability/test/OpenSSLPortabilityTest.cpp @@ -15,34 +15,47 @@ */ #include -#include +#include using namespace folly; +using namespace folly::ssl; using namespace testing; TEST(OpenSSLPortabilityTest, TestRSASetter) { - RSA* r = RSA_new(); - RSA* public_key = RSA_new(); + RsaUniquePtr r(RSA_new()); BIGNUM* n = BN_new(); BIGNUM* e = BN_new(); BIGNUM* d = BN_new(); - const BIGNUM* n_actual = BN_new(); - const BIGNUM* e_actual = BN_new(); - const BIGNUM* d_actual = BN_new(); + BIGNUM* n_actual; + BIGNUM* e_actual; + BIGNUM* d_actual; EXPECT_TRUE(BN_set_bit(n, 1)); EXPECT_TRUE(BN_set_bit(e, 3)); EXPECT_TRUE(BN_set_bit(d, 2)); - RSA_set0_key(r, n, e, d); - RSA_get0_key(r, &n_actual, &e_actual, &d_actual); + RSA_set0_key(r.get(), n, e, d); + RSA_get0_key( + r.get(), + (const BIGNUM**)&n_actual, + (const BIGNUM**)&e_actual, + (const BIGNUM**)&d_actual); // BN_cmp returns 0 if the two BIGNUMs are equal EXPECT_FALSE(BN_cmp(n, n_actual)); EXPECT_FALSE(BN_cmp(e, e_actual)); EXPECT_FALSE(BN_cmp(d, d_actual)); - RSA_set0_key(public_key, n, e, nullptr); - const BIGNUM* n_public = BN_new(); - const BIGNUM* e_public = BN_new(); - RSA_get0_key(public_key, &n_public, &e_public, nullptr); - EXPECT_FALSE(BN_cmp(n, n_public)); - EXPECT_FALSE(BN_cmp(e, e_public)); + RsaUniquePtr public_key(RSA_new()); + BIGNUM* n_public = BN_new(); + BIGNUM* e_public = BN_new(); + EXPECT_TRUE(BN_set_bit(n_public, 1)); + EXPECT_TRUE(BN_set_bit(e_public, 3)); + RSA_set0_key(public_key.get(), n_public, e_public, nullptr); + BIGNUM* n_public_actual; + BIGNUM* e_public_actual; + RSA_get0_key( + public_key.get(), + (const BIGNUM**)&n_public_actual, + (const BIGNUM**)&e_public_actual, + nullptr); + EXPECT_FALSE(BN_cmp(n_public, n_public_actual)); + EXPECT_FALSE(BN_cmp(e_public, e_public_actual)); }