From 3672bfa998f932bb306e88bf1202a548bb463f24 Mon Sep 17 00:00:00 2001 From: Stefan Boberg Date: Thu, 13 May 2021 18:22:09 +0200 Subject: Added logic to guard against accidental file move in file CAS fast path Now verifies the chunk is referencing an entire file before moving it into place --- zencore/iobuffer.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'zencore/iobuffer.cpp') diff --git a/zencore/iobuffer.cpp b/zencore/iobuffer.cpp index e74287c48..d32a30358 100644 --- a/zencore/iobuffer.cpp +++ b/zencore/iobuffer.cpp @@ -339,7 +339,7 @@ IoBufferBuilder::MakeFromTemporaryFile(const wchar_t* FileName, uint64_t Offset, // We need to open with DELETE since this is used for the case // when a file has been written to a staging directory, and is going - // to be moved in place. + // to be moved in place HRESULT hRes = DataFile.Create(FileName, GENERIC_READ | DELETE, FILE_SHARE_READ | FILE_SHARE_DELETE, OPEN_EXISTING); @@ -361,7 +361,10 @@ IoBufferBuilder::MakeFromTemporaryFile(const wchar_t* FileName, uint64_t Offset, } } - return IoBuffer(IoBuffer::File, DataFile.Detach(), Offset, Size); + IoBuffer Iob(IoBuffer::File, DataFile.Detach(), Offset, Size); + Iob.m_Core->SetIsWholeFile(true); + + return Iob; } return {}; -- cgit v1.2.3