From 44feab23a7c6060a3b432c04e3f952c5a7104325 Mon Sep 17 00:00:00 2001 From: Weixie Cui Date: Sat, 28 Feb 2026 19:53:24 +0800 Subject: [PATCH] script: Fix undefined behavior in Clone() -- std::transform writes past end of empty vector --- src/script/descriptor.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/script/descriptor.cpp b/src/script/descriptor.cpp index 5bbf7517a90..19315dd6a30 100644 --- a/src/script/descriptor.cpp +++ b/src/script/descriptor.cpp @@ -1310,7 +1310,7 @@ public: { std::vector> providers; providers.reserve(m_pubkey_args.size()); - std::transform(m_pubkey_args.begin(), m_pubkey_args.end(), providers.begin(), [](const std::unique_ptr& p) { return p->Clone(); }); + std::transform(m_pubkey_args.begin(), m_pubkey_args.end(), std::back_inserter(providers), [](const std::unique_ptr& p) { return p->Clone(); }); return std::make_unique(m_threshold, std::move(providers), m_sorted); } }; @@ -1533,7 +1533,7 @@ public: { std::vector> subdescs; subdescs.reserve(m_subdescriptor_args.size()); - std::transform(m_subdescriptor_args.begin(), m_subdescriptor_args.end(), subdescs.begin(), [](const std::unique_ptr& d) { return d->Clone(); }); + std::transform(m_subdescriptor_args.begin(), m_subdescriptor_args.end(), std::back_inserter(subdescs), [](const std::unique_ptr& d) { return d->Clone(); }); return std::make_unique(m_pubkey_args.at(0)->Clone(), std::move(subdescs), m_depths); } };