From 34514c2658f809404b9a165591f242ee10250519 Mon Sep 17 00:00:00 2001 From: Florian Sattler Date: Wed, 19 Mar 2025 02:20:34 +0100 Subject: [PATCH] Prevent local stack memory leakage when parsing (#302) We need to resets current_block to a nullptr after parsing the template in `parse_into`, otherwise, current_block will refer to local stack space after we return from Parser::parse. --- include/inja/parser.hpp | 2 ++ single_include/inja/inja.hpp | 2 ++ 2 files changed, 4 insertions(+) diff --git a/include/inja/parser.hpp b/include/inja/parser.hpp index a8b6a28..2843c95 100644 --- a/include/inja/parser.hpp +++ b/include/inja/parser.hpp @@ -573,6 +573,7 @@ class Parser { throw_parser_error("unmatched for"); } } + current_block = nullptr; return; case Token::Kind::Text: { current_block->nodes.emplace_back(std::make_shared(tok.text.data() - tmpl.content.c_str(), tok.text.size())); @@ -617,6 +618,7 @@ class Parser { } break; } } + current_block = nullptr; } public: diff --git a/single_include/inja/inja.hpp b/single_include/inja/inja.hpp index 22c27f2..71560f3 100644 --- a/single_include/inja/inja.hpp +++ b/single_include/inja/inja.hpp @@ -2016,6 +2016,7 @@ class Parser { throw_parser_error("unmatched for"); } } + current_block = nullptr; return; case Token::Kind::Text: { current_block->nodes.emplace_back(std::make_shared(tok.text.data() - tmpl.content.c_str(), tok.text.size())); @@ -2060,6 +2061,7 @@ class Parser { } break; } } + current_block = nullptr; } public: