From 1155ed2048a24f4dfcfa65d63243b77973f820d6 Mon Sep 17 00:00:00 2001 From: Dan Engelbrecht Date: Thu, 2 May 2024 17:40:30 +0200 Subject: fix zero size attachment replies (#69) - Bugfix: Don't try to respond with zero size partial cache value when partial size is zero - Improvement: Added more validation of data read from cache / cas --- src/zenstore/cache/cacherpc.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'src/zenstore/cache/cacherpc.cpp') diff --git a/src/zenstore/cache/cacherpc.cpp b/src/zenstore/cache/cacherpc.cpp index 6871dfd56..5bd73e902 100644 --- a/src/zenstore/cache/cacherpc.cpp +++ b/src/zenstore/cache/cacherpc.cpp @@ -1632,6 +1632,10 @@ CacheRpcHandler::WriteGetCacheChunksResponse([[maybe_unused]] const CacheRequest if (Request.Value && !EnumHasAllFlags(Request.DownstreamPolicy, CachePolicy::SkipData)) { auto IsPartialRangeRequest = [](const ChunkRequest& Request) { + if (Request.RequestedOffset == 0 && Request.RequestedSize == 0) + { + return false; + } if ((Request.RequestedOffset != 0) || (Request.RequestedSize != ~uint64_t(0))) { return true; @@ -1657,7 +1661,8 @@ CacheRpcHandler::WriteGetCacheChunksResponse([[maybe_unused]] const CacheRequest FragmentRawOffset = Request.RequestedOffset; } } - Request.Value = Request.Value.GetRange(Request.RequestedOffset, Request.RequestedSize); + Request.Value = + Request.Value.GetRange(Request.RequestedOffset, Request.RequestedSize == 0 ? 1u : Request.RequestedSize); uint64_t FragmentLength = Request.Value.DecodeRawSize(); IoHashStream FragmentHashStream; -- cgit v1.2.3