EncryptedBlockStore crashed when a modified block was removed. Fixed crash and added test case.
This commit is contained in:
parent
d916408a01
commit
52bb855627
@ -151,6 +151,7 @@ void EncryptedBlock<Cipher>::_encryptToBaseBlock() {
|
||||
|
||||
template<class Cipher>
|
||||
cpputils::unique_ref<Block> EncryptedBlock<Cipher>::releaseBlock() {
|
||||
_encryptToBaseBlock();
|
||||
return std::move(_baseBlock);
|
||||
}
|
||||
|
||||
|
@ -100,6 +100,14 @@ TYPED_TEST_P(BlockStoreTest, NumBlocksIsCorrectAfterRemovingABlock) {
|
||||
EXPECT_EQ(1, blockStore->numBlocks());
|
||||
}
|
||||
|
||||
TYPED_TEST_P(BlockStoreTest, CanRemoveModifiedBlock) {
|
||||
auto blockStore = this->fixture.createBlockStore();
|
||||
auto block = blockStore->create(cpputils::Data(5));
|
||||
block->write("data", 0, 4);
|
||||
blockStore->remove(std::move(block));
|
||||
EXPECT_EQ(0, blockStore->numBlocks());
|
||||
}
|
||||
|
||||
#include "BlockStoreTest_Size.h"
|
||||
#include "BlockStoreTest_Data.h"
|
||||
|
||||
@ -129,7 +137,8 @@ REGISTER_TYPED_TEST_CASE_P(BlockStoreTest,
|
||||
NumBlocksIsCorrectAfterRemovingABlock,
|
||||
WriteAndReadImmediately,
|
||||
WriteAndReadAfterLoading,
|
||||
OverwriteAndRead
|
||||
OverwriteAndRead,
|
||||
CanRemoveModifiedBlock
|
||||
);
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user