From 4ae3c2c6d2ea8e3da6f208e631068ebf284dfd44 Mon Sep 17 00:00:00 2001 From: Maksim Denisov Date: Mon, 27 May 2024 15:02:40 +0200 Subject: Copy digest before emplacing in BlobContainer ...fixing potentially dangerous code (evaluation order is unspecified). (cherry-picked from b91f39d2429704859e799bff2554fc40636438f9) --- src/buildtool/execution_api/bazel_msg/bazel_blob_container.hpp | 5 +++-- 1 file 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 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. -- cgit v1.2.3