]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
librbd: align block crypto input bufferlist
authorOr Ozeri <oro@il.ibm.com>
Thu, 24 Dec 2020 09:20:03 +0000 (11:20 +0200)
committerOr Ozeri <oro@il.ibm.com>
Thu, 24 Dec 2020 09:43:02 +0000 (11:43 +0200)
This commit ensures bufferlists fed to BlockCrypto are aligned to block size

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

index f37e78f245bd857cce0451045276f01a6b25bf04..c782807bd2a75f986d0bf8dd572b2af881556eb6 100644 (file)
@@ -38,6 +38,7 @@ int BlockCrypto<T>::crypt(ceph::bufferlist* data, uint64_t image_offset,
 
   bufferlist src = *data;
   data->clear();
+  src.rebuild_aligned_size_and_memory(m_block_size, CEPH_PAGE_SIZE);
 
   auto ctx = m_data_cryptor->get_context(mode);
   if (ctx == nullptr) {
index 2089970f7ae4e5dbf11837d66165b0931589297b..cb38d86c24ce8c12e7fe0b1c5c5d5403b5829d1c 100644 (file)
@@ -91,11 +91,9 @@ TEST_F(TestMockCryptoBlockCrypto, Encrypt) {
 
   expect_get_context(CipherMode::CIPHER_MODE_ENC);
   expect_init_context(std::string("\x34\x12\0\0\0\0\0\0\0\0\0\0\0\0\0\0", 16));
-  expect_update_context("123", 0);
-  expect_update_context("4", 4);
+  expect_update_context("1234", 4);
   expect_init_context(std::string("\x35\x12\0\0\0\0\0\0\0\0\0\0\0\0\0\0", 16));
-  expect_update_context("56", 0);
-  expect_update_context("78", 4);
+  expect_update_context("5678", 4);
   EXPECT_CALL(cryptor, return_context(_, CipherMode::CIPHER_MODE_ENC));
 
   ASSERT_EQ(0, bc->encrypt(&data, image_offset));