diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/buildtool/execution_api/execution_service/cas_server.cpp | 9 |
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. |