summaryrefslogtreecommitdiff
path: root/src/buildtool/execution_api/execution_service
diff options
context:
space:
mode:
authorSascha Roloff <sascha.roloff@huawei.com>2024-01-17 17:17:58 +0100
committerSascha Roloff <sascha.roloff@huawei.com>2024-01-19 17:55:13 +0100
commitf410e394b48d05e06cf3c5fefe93a91d96c4fbb6 (patch)
tree70f8aa46b50b30cb52320d9af33ef900f92894e0 /src/buildtool/execution_api/execution_service
parentcf3f87ce51dc3a6d20d4289d5103aab893d629a2 (diff)
downloadjustbuild-f410e394b48d05e06cf3c5fefe93a91d96c4fbb6.tar.gz
Add digest validity check to the blob split command
Diffstat (limited to 'src/buildtool/execution_api/execution_service')
-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.