summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMaksim Denisov <denisov.maksim@huawei.com>2024-05-27 15:02:40 +0200
committerMaksim Denisov <denisov.maksim@huawei.com>2024-05-28 16:19:19 +0200
commitb91f39d2429704859e799bff2554fc40636438f9 (patch)
tree56e99360beb384bba6107b7c8a477727a536eb51
parenta8cbdab9f795999cf99458e63343e13322402739 (diff)
downloadjustbuild-b91f39d2429704859e799bff2554fc40636438f9.tar.gz
Copy digest before emplacing in BlobContainer
...fixing potentially dangerous code (evaluation order is unspecified).
-rw-r--r--src/buildtool/execution_api/bazel_msg/bazel_blob_container.hpp5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/buildtool/execution_api/bazel_msg/bazel_blob_container.hpp b/src/buildtool/execution_api/bazel_msg/bazel_blob_container.hpp
index 2e028d05..41f30ddd 100644
--- a/src/buildtool/execution_api/bazel_msg/bazel_blob_container.hpp
+++ b/src/buildtool/execution_api/bazel_msg/bazel_blob_container.hpp
@@ -230,13 +230,14 @@ class BlobContainer {
explicit BlobContainer(std::vector<BazelBlob> blobs) {
blobs_.reserve(blobs.size());
for (auto& blob : blobs) {
- blobs_.emplace(blob.digest, std::move(blob));
+ this->Emplace(std::move(blob));
}
}
/// \brief Emplace new BazelBlob to container.
void Emplace(BazelBlob&& blob) {
- blobs_.emplace(blob.digest, std::move(blob));
+ bazel_re::Digest digest = blob.digest;
+ blobs_.emplace(std::move(digest), std::move(blob));
}
/// \brief Clear all BazelBlobs from container.