From 0cc6d90e3d987f563cf36177e23ed13c06ff956d Mon Sep 17 00:00:00 2001 From: WerWolv Date: Sun, 27 Feb 2022 23:28:34 +0100 Subject: [PATCH] patterns: Fixed off-by-one error when calculating unsized array sizes Closes #453, thanks to @Dyddye --- .../hex/pattern_language/ast/ast_node_array_variable_decl.hpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/libimhex/include/hex/pattern_language/ast/ast_node_array_variable_decl.hpp b/lib/libimhex/include/hex/pattern_language/ast/ast_node_array_variable_decl.hpp index 5d4bd8d06..1ed2739a9 100644 --- a/lib/libimhex/include/hex/pattern_language/ast/ast_node_array_variable_decl.hpp +++ b/lib/libimhex/include/hex/pattern_language/ast/ast_node_array_variable_decl.hpp @@ -117,7 +117,7 @@ namespace hex::pl { } else { std::vector buffer(templatePattern->getSize()); while (true) { - if (evaluator->dataOffset() >= evaluator->getProvider()->getActualSize() - buffer.size()) + if (evaluator->dataOffset() > evaluator->getProvider()->getActualSize() - buffer.size()) LogConsole::abortEvaluation("reached end of file before finding end of unsized array", this); evaluator->getProvider()->read(evaluator->dataOffset(), buffer.data(), buffer.size()); @@ -260,7 +260,7 @@ namespace hex::pl { for (auto &pattern : patterns) { std::vector buffer(pattern->getSize()); - if (evaluator->dataOffset() >= evaluator->getProvider()->getActualSize() - buffer.size()) { + if (evaluator->dataOffset() > evaluator->getProvider()->getActualSize() - buffer.size()) { LogConsole::abortEvaluation("reached end of file before finding end of unsized array", this); }