From fcc474920ddcd8724cb6c6b217c15aa5105dd8e0 Mon Sep 17 00:00:00 2001 From: Oliver Hamlet Date: Sun, 23 Jun 2024 11:17:11 +0100 Subject: [PATCH] Fix use-after-free in ConditionEvaluator::SetAdditionalDataPaths() --- src/api/metadata/condition_evaluator.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/api/metadata/condition_evaluator.cpp b/src/api/metadata/condition_evaluator.cpp index d9eab3b4..b65f7c1d 100644 --- a/src/api/metadata/condition_evaluator.cpp +++ b/src/api/metadata/condition_evaluator.cpp @@ -242,10 +242,13 @@ void ConditionEvaluator::RefreshLoadedPluginsState( void ConditionEvaluator::SetAdditionalDataPaths( const std::vector& dataPaths) { std::vector dataPathStrings; - std::vector dataPathCStrings; for (const auto& dataPath : dataPaths) { dataPathStrings.push_back(dataPath.u8string()); - dataPathCStrings.push_back(dataPathStrings.back().c_str()); + } + + std::vector dataPathCStrings; + for (const auto& dataPath : dataPathStrings) { + dataPathCStrings.push_back(dataPath.c_str()); } int result = lci_state_set_additional_data_paths(