patterns: Fixed off-by-one error when calculating unsized array sizes

Closes #453, thanks to @Dyddye
This commit is contained in:
WerWolv
2022-02-27 23:28:34 +01:00
parent 66d1b3fd2f
commit 0cc6d90e3d

View File

@@ -117,7 +117,7 @@ namespace hex::pl {
} else {
std::vector<u8> 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<u8> 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);
}