diff options
Diffstat (limited to 'zenstore/compactcas.cpp')
| -rw-r--r-- | zenstore/compactcas.cpp | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/zenstore/compactcas.cpp b/zenstore/compactcas.cpp index 7507a82f6..8679eb95e 100644 --- a/zenstore/compactcas.cpp +++ b/zenstore/compactcas.cpp @@ -269,9 +269,11 @@ CasContainerStrategy::Scrub(ScrubContext& Ctx) } IoBuffer Buffer(IoBuffer::Wrap, Data, Size); - if (CompressedBuffer Compressed = CompressedBuffer::FromCompressed(SharedBuffer(Buffer)); Compressed) + IoHash RawHash; + uint64_t RawSize; + if (CompressedBuffer::ValidateCompressedHeader(Buffer, RawHash, RawSize)) { - if (IoHash::FromBLAKE3(Compressed.GetRawHash()) != Hash) + if (RawHash != Hash) { // Hash mismatch BadKeys.push_back(Hash); @@ -295,10 +297,13 @@ CasContainerStrategy::Scrub(ScrubContext& Ctx) const IoHash& Hash = ChunkIndexToChunkHash[ChunkIndex]; IoBuffer Buffer(IoBuffer::BorrowedFile, File.GetBasicFile().Handle(), Offset, Size); + + IoHash RawHash; + uint64_t RawSize; // TODO: Add API to verify compressed buffer without having to memorymap the whole file - if (CompressedBuffer Compressed = CompressedBuffer::FromCompressed(SharedBuffer(Buffer)); Compressed) + if (CompressedBuffer::ValidateCompressedHeader(Buffer, RawHash, RawSize)) { - if (IoHash::FromBLAKE3(Compressed.GetRawHash()) != Hash) + if (RawHash != Hash) { // Hash mismatch BadKeys.push_back(Hash); |