diff options
author | Maksim Denisov <denisov.maksim@huawei.com> | 2024-05-27 15:02:40 +0200 |
---|---|---|
committer | Klaus Aehlig <klaus.aehlig@huawei.com> | 2024-09-09 12:38:37 +0200 |
commit | 4ae3c2c6d2ea8e3da6f208e631068ebf284dfd44 (patch) | |
tree | 745fead91d86df2df1dbc6af5ec644db11a7d650 | |
parent | 05833a48a8d3f5bf096de421e52b9ac306f6593e (diff) | |
download | justbuild-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.hpp | 5 |
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. |