From d1cec3d3edf4d1af6e60cee7088a5d28b9467b35 Mon Sep 17 00:00:00 2001 From: Sergei Zimmerman Date: Sun, 5 Oct 2025 16:55:41 +0300 Subject: [PATCH 1/2] libstore: Fix use-after-move in DerivationGoal::repairClosure (cherry picked from commit 452ec09fe0d027565defb804c29bde6d62996a95) --- src/libstore/build/derivation-goal.cc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/libstore/build/derivation-goal.cc b/src/libstore/build/derivation-goal.cc index 883121d94..4b4450bc8 100644 --- a/src/libstore/build/derivation-goal.cc +++ b/src/libstore/build/derivation-goal.cc @@ -272,9 +272,10 @@ Goal::Co DerivationGoal::repairClosure() bmRepair)); } + bool haveWaitees = !waitees.empty(); co_await await(std::move(waitees)); - if (!waitees.empty()) { + if (haveWaitees) { trace("closure repaired"); if (nrFailed > 0) throw Error( From fa8230167d31f84432d89d599dceb05af0b3e22d Mon Sep 17 00:00:00 2001 From: Sergei Zimmerman Date: Sun, 5 Oct 2025 16:57:13 +0300 Subject: [PATCH 2/2] libexpr: Use use-after-move in SampleStack::saveProfile() (cherry picked from commit be1ade737391a6656b3ffb872fb9ec7b36c89ca0) --- src/libexpr/eval-profiler.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libexpr/eval-profiler.cc b/src/libexpr/eval-profiler.cc index 7769d47d5..53d326d59 100644 --- a/src/libexpr/eval-profiler.cc +++ b/src/libexpr/eval-profiler.cc @@ -324,7 +324,7 @@ void SampleStack::saveProfile() std::visit([&](auto && info) { info.symbolize(state, os, posCache); }, pos); } os << " " << count; - writeLine(profileFd.get(), std::move(os).str()); + writeLine(profileFd.get(), os.str()); /* Clear ostringstream. */ os.str(""); os.clear();