From 2cec7342d9d8a2e66fbec8e442a09cf6252c4b07 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Villemot?= <sebastien@dynare.org> Date: Mon, 26 Sep 2022 17:16:22 +0200 Subject: [PATCH] Fix bug in ModelTree::writeParamsDerivativesFileHelper() Elements of params_derivatives could be accessed without them being defined, thus causing illegal memory read. Ensure that these elements always exist. (partially cherry picked from commit 64157d908393a42355e9e67507924106d45aaea5) --- src/ModelTree.cc | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/ModelTree.cc b/src/ModelTree.cc index 5d89e7b2..952d0c05 100644 --- a/src/ModelTree.cc +++ b/src/ModelTree.cc @@ -124,6 +124,9 @@ ModelTree::ModelTree(SymbolTable &symbol_table_arg, NNZDerivatives(4, 0), temporary_terms_derivatives(4) { + // Ensure that elements accessed by {Static,Dynamic}Model:write{Json,}ParamsDerivativesFile() exist + for (const auto &ord : {pair{0, 1}, pair{1, 1}, pair{0, 2}, pair{1, 2}, pair{2, 1}, pair{3, 1}}) + params_derivatives.emplace(ord, decltype(params_derivatives)::mapped_type{}); } ModelTree::ModelTree(const ModelTree &m) : -- GitLab