From: Or Ozeri Date: Thu, 24 Dec 2020 09:20:03 +0000 (+0200) Subject: librbd: align block crypto input bufferlist X-Git-Tag: v16.1.0~87^2~12 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=72e8a4ebc268cb5d60407442fa0b4813d823cf0c;p=ceph.git librbd: align block crypto input bufferlist This commit ensures bufferlists fed to BlockCrypto are aligned to block size Signed-off-by: Or Ozeri --- diff --git a/src/librbd/crypto/BlockCrypto.cc b/src/librbd/crypto/BlockCrypto.cc index f37e78f245b..c782807bd2a 100644 --- a/src/librbd/crypto/BlockCrypto.cc +++ b/src/librbd/crypto/BlockCrypto.cc @@ -38,6 +38,7 @@ int BlockCrypto::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) { diff --git a/src/test/librbd/crypto/test_mock_BlockCrypto.cc b/src/test/librbd/crypto/test_mock_BlockCrypto.cc index 2089970f7ae..cb38d86c24c 100644 --- a/src/test/librbd/crypto/test_mock_BlockCrypto.cc +++ b/src/test/librbd/crypto/test_mock_BlockCrypto.cc @@ -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));