]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
test/librbd: fix memory leak in TestMockCryptoBlockCrypto
authorOr Ozeri <oro@il.ibm.com>
Thu, 25 Nov 2021 13:05:55 +0000 (15:05 +0200)
committerOr Ozeri <oro@il.ibm.com>
Sun, 28 Nov 2021 11:06:33 +0000 (13:06 +0200)
fix memory leak in TestMockCryptoBlockCrypto.

Signed-off-by: Or Ozeri <oro@il.ibm.com>
src/test/librbd/crypto/test_mock_BlockCrypto.cc

index 6d0a42172331a0f8b9ec2bf120d5b330dc96242a..4ddc43d3bb7c0afcab099565f295671312e3c3af 100644 (file)
@@ -22,7 +22,7 @@ MATCHER_P(CompareArrayToString, s, "") {
 }
 
 struct TestMockCryptoBlockCrypto : public TestFixture {
-    MockDataCryptor cryptor;
+    MockDataCryptor* cryptor;
     ceph::ref_t<BlockCrypto<MockCryptoContext>> bc;
     int cryptor_block_size = 16;
     int cryptor_iv_size = 16;
@@ -33,35 +33,37 @@ struct TestMockCryptoBlockCrypto : public TestFixture {
     void SetUp() override {
       TestFixture::SetUp();
 
-      cryptor.block_size = cryptor_block_size;
+      cryptor = new MockDataCryptor();
+      cryptor->block_size = cryptor_block_size;
       bc = new BlockCrypto<MockCryptoContext>(
-              reinterpret_cast<CephContext*>(m_ioctx.cct()), &cryptor,
+              reinterpret_cast<CephContext*>(m_ioctx.cct()), cryptor,
               block_size, data_offset);
       expectation_set = new ExpectationSet();
     }
 
     void TearDown() override {
       delete expectation_set;
+      bc->put();
       TestFixture::TearDown();
     }
 
     void expect_get_context(CipherMode mode) {
       _set_last_expectation(
-              EXPECT_CALL(cryptor, get_context(mode))
+              EXPECT_CALL(*cryptor, get_context(mode))
               .After(*expectation_set).WillOnce(Return(
                       new MockCryptoContext())));
     }
 
     void expect_init_context(const std::string& iv) {
       _set_last_expectation(
-              EXPECT_CALL(cryptor, init_context(_, CompareArrayToString(iv),
+              EXPECT_CALL(*cryptor, init_context(_, CompareArrayToString(iv),
                                                 cryptor_iv_size))
               .After(*expectation_set));
     }
 
     void expect_update_context(const std::string& in_str, int out_ret) {
       _set_last_expectation(
-              EXPECT_CALL(cryptor, update_context(_,
+              EXPECT_CALL(*cryptor, update_context(_,
                                                   CompareArrayToString(in_str),
                                                   _, in_str.length()))
               .After(*expectation_set).WillOnce(Return(out_ret)));
@@ -93,7 +95,7 @@ TEST_F(TestMockCryptoBlockCrypto, Encrypt) {
   expect_update_context(std::string(2048, '1') + std::string(2048, '2'), 4096);
   expect_init_context(std::string("\x38\x12\0\0\0\0\0\0\0\0\0\0\0\0\0\0", 16));
   expect_update_context(std::string(2048, '2') + std::string(2048, '3'), 4096);
-  EXPECT_CALL(cryptor, return_context(_, CipherMode::CIPHER_MODE_ENC));
+  EXPECT_CALL(*cryptor, return_context(_, CipherMode::CIPHER_MODE_ENC));
 
   ASSERT_EQ(0, bc->encrypt(&data, image_offset));
 
@@ -115,7 +117,7 @@ TEST_F(TestMockCryptoBlockCrypto, UnalignedDataLength) {
 TEST_F(TestMockCryptoBlockCrypto, GetContextError) {
   ceph::bufferlist data;
   data.append(std::string(4096, '1'));
-  EXPECT_CALL(cryptor, get_context(CipherMode::CIPHER_MODE_ENC)).WillOnce(
+  EXPECT_CALL(*cryptor, get_context(CipherMode::CIPHER_MODE_ENC)).WillOnce(
           Return(nullptr));
   ASSERT_EQ(-EIO, bc->encrypt(&data, 0));
 }
@@ -124,7 +126,7 @@ TEST_F(TestMockCryptoBlockCrypto, InitContextError) {
   ceph::bufferlist data;
   data.append(std::string(4096, '1'));
   expect_get_context(CipherMode::CIPHER_MODE_ENC);
-  EXPECT_CALL(cryptor, init_context(_, _, _)).WillOnce(Return(-123));
+  EXPECT_CALL(*cryptor, init_context(_, _, _)).WillOnce(Return(-123));
   ASSERT_EQ(-123, bc->encrypt(&data, 0));
 }
 
@@ -132,8 +134,8 @@ TEST_F(TestMockCryptoBlockCrypto, UpdateContextError) {
   ceph::bufferlist data;
   data.append(std::string(4096, '1'));
   expect_get_context(CipherMode::CIPHER_MODE_ENC);
-  EXPECT_CALL(cryptor, init_context(_, _, _));
-  EXPECT_CALL(cryptor, update_context(_, _, _, _)).WillOnce(Return(-123));
+  EXPECT_CALL(*cryptor, init_context(_, _, _));
+  EXPECT_CALL(*cryptor, update_context(_, _, _, _)).WillOnce(Return(-123));
   ASSERT_EQ(-123, bc->encrypt(&data, 0));
 }