diff options
author | Sascha Roloff <sascha.roloff@huawei.com> | 2024-01-17 17:17:58 +0100 |
---|---|---|
committer | Sascha Roloff <sascha.roloff@huawei.com> | 2024-01-19 17:55:13 +0100 |
commit | f410e394b48d05e06cf3c5fefe93a91d96c4fbb6 (patch) | |
tree | 70f8aa46b50b30cb52320d9af33ef900f92894e0 | |
parent | cf3f87ce51dc3a6d20d4289d5103aab893d629a2 (diff) | |
download | justbuild-f410e394b48d05e06cf3c5fefe93a91d96c4fbb6.tar.gz |
Add digest validity check to the blob split command
-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. |