summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/buildtool/execution_api/execution_service/cas_server.cpp9
1 files changed, 8 insertions, 1 deletions
diff --git a/src/buildtool/execution_api/execution_service/cas_server.cpp b/src/buildtool/execution_api/execution_service/cas_server.cpp
index 27e4b7eb..ce3feabb 100644
--- a/src/buildtool/execution_api/execution_service/cas_server.cpp
+++ b/src/buildtool/execution_api/execution_service/cas_server.cpp
@@ -202,6 +202,14 @@ auto CASServiceImpl::SplitBlob(::grpc::ServerContext* /*context*/,
return ::grpc::Status{grpc::StatusCode::INVALID_ARGUMENT, str};
}
+ auto const& blob_digest = request->blob_digest();
+ if (not IsValidHash(blob_digest.hash())) {
+ auto str =
+ fmt::format("SplitBlob: unsupported digest {}", blob_digest.hash());
+ logger_.Emit(LogLevel::Error, str);
+ return ::grpc::Status{grpc::StatusCode::INVALID_ARGUMENT, str};
+ }
+
// Acquire garbage collection lock.
auto lock = GarbageCollector::SharedLock();
if (not lock) {
@@ -211,7 +219,6 @@ auto CASServiceImpl::SplitBlob(::grpc::ServerContext* /*context*/,
return ::grpc::Status{grpc::StatusCode::INTERNAL, str};
}
- auto const& blob_digest = request->blob_digest();
logger_.Emit(LogLevel::Info, "SplitBlob({})", blob_digest.hash());
// Check blob existence.