summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMaksim Denisov <denisov.maksim@huawei.com>2024-05-27 15:02:40 +0200
committerKlaus Aehlig <klaus.aehlig@huawei.com>2024-09-09 12:38:37 +0200
commit4ae3c2c6d2ea8e3da6f208e631068ebf284dfd44 (patch)
tree745fead91d86df2df1dbc6af5ec644db11a7d650
parent05833a48a8d3f5bf096de421e52b9ac306f6593e (diff)
downloadjustbuild-4ae3c2c6d2ea8e3da6f208e631068ebf284dfd44.tar.gz
Copy digest before emplacing in BlobContainer
...fixing potentially dangerous code (evaluation order is unspecified). (cherry-picked from b91f39d2429704859e799bff2554fc40636438f9)
-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.