From b34a00de0f6ecea6d97fd80f65d2a2dca0876e6e Mon Sep 17 00:00:00 2001 From: Abhishek Lekshmanan Date: Wed, 27 Mar 2019 13:45:27 +0100 Subject: [PATCH] test_rgw_crypto: add invalid ranges beyond obj boundary This is just to assert we're not doing an invalid memory access Signed-off-by: Abhishek Lekshmanan --- src/test/rgw/test_rgw_crypto.cc | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/src/test/rgw/test_rgw_crypto.cc b/src/test/rgw/test_rgw_crypto.cc index 5ab2bf12430..5f6e805f83f 100644 --- a/src/test/rgw/test_rgw_crypto.cc +++ b/src/test/rgw/test_rgw_crypto.cc @@ -666,6 +666,28 @@ TEST(TestRGWCrypto, check_RGWGetObj_BlockDecrypt_fixup_non_aligned) } +TEST(TestRGWCrypto, check_RGWGetObj_BlockDecrypt_fixup_invalid_ranges) +{ + + ut_get_sink get_sink; + auto nonecrypt = std::make_unique(4096); + TestRGWGetObj_BlockDecrypt decrypt(g_ceph_context, &get_sink, + std::move(nonecrypt)); + + decrypt.set_parts_len(create_mp_parts(obj_size, part_size)); + + // the ranges below would be mostly unreachable in current code as rgw + // would've returned a 411 before reaching, but we're just doing this to make + // sure we don't have invalid access + ASSERT_EQ(fixup_range(&decrypt, obj_size - 1, obj_size + 100), + range_t(obj_size - 4096, obj_size + 4095)); + ASSERT_EQ(fixup_range(&decrypt, obj_size, obj_size + 1), + range_t(obj_size, obj_size + 4095)); + ASSERT_EQ(fixup_range(&decrypt, obj_size+1, obj_size + 100), + range_t(obj_size, obj_size + 4095)); + +} + TEST(TestRGWCrypto, verify_RGWPutObj_BlockEncrypt_chunks) { //create some input for encryption -- 2.47.3