aboutsummaryrefslogtreecommitdiff
path: root/zenserver/cache/structuredcache.cpp
diff options
context:
space:
mode:
authorStefan Boberg <[email protected]>2021-05-24 17:55:19 +0200
committerStefan Boberg <[email protected]>2021-05-24 17:55:19 +0200
commite08d6da5d64d3c9b287e2ce53f45414628f59909 (patch)
treefa0737ec5dd6d8e12313614620dc50a87826d8cb /zenserver/cache/structuredcache.cpp
parentAdded CompressedBuffer round-trip tests (diff)
downloadzen-e08d6da5d64d3c9b287e2ce53f45414628f59909.tar.xz
zen-e08d6da5d64d3c9b287e2ce53f45414628f59909.zip
Validate payloads using embedded CompressedBuffer hash
Diffstat (limited to 'zenserver/cache/structuredcache.cpp')
-rw-r--r--zenserver/cache/structuredcache.cpp7
1 files changed, 5 insertions, 2 deletions
diff --git a/zenserver/cache/structuredcache.cpp b/zenserver/cache/structuredcache.cpp
index ecc2367ad..317c5641a 100644
--- a/zenserver/cache/structuredcache.cpp
+++ b/zenserver/cache/structuredcache.cpp
@@ -4,6 +4,7 @@
#include <zencore/compactbinarybuilder.h>
#include <zencore/compactbinaryvalidation.h>
+#include <zencore/compress.h>
#include <zencore/fmtutils.h>
#include <zencore/httpserver.h>
#include <zencore/timer.h>
@@ -243,9 +244,11 @@ HttpStructuredCacheService::HandleCachePayloadRequest(zen::HttpServerRequest& Re
{
zen::IoHash ChunkHash = zen::IoHash::HashMemory(Body);
- if (ChunkHash != Ref.PayloadId)
+ zen::CompressedBuffer Compressed = zen::CompressedBuffer::FromCompressed(SharedBuffer(Body));
+
+ if (IoHash::FromBLAKE3(Compressed.GetRawHash()) != Ref.PayloadId)
{
- // the URL and data hashes don't match!
+ // the URL specified content id and content hashes don't match!
return Request.WriteResponse(HttpResponse::BadRequest);
}