From b7919249833bc543aa30866e79140d5f9c8e8656 Mon Sep 17 00:00:00 2001 From: JunsuChoi Date: Tue, 22 Jun 2021 13:27:40 +0900 Subject: [PATCH] svg_loader XmlParser: Fix check the end of string While skipping the string, check the end of the string first. Prevents an invalid read when parser really get to the end of the string. --- src/loaders/svg/tvgXmlParser.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/loaders/svg/tvgXmlParser.cpp b/src/loaders/svg/tvgXmlParser.cpp index 8ee5dcd8..ed2a9b84 100644 --- a/src/loaders/svg/tvgXmlParser.cpp +++ b/src/loaders/svg/tvgXmlParser.cpp @@ -142,7 +142,7 @@ static const char* _simpleXmlUnskipWhiteSpace(const char* itr, const char* itrSt static const char* _simpleXmlSkipXmlEntities(const char* itr, const char* itrEnd) { auto p = itr; - while (*itr == '&' && itr < itrEnd) { + while (itr < itrEnd && *itr == '&') { for (int i = 0; i < NUMBER_OF_XML_ENTITIES; ++i) { if (strncmp(itr, xmlEntity[i], xmlEntityLength[i]) == 0) { itr += xmlEntityLength[i]; @@ -159,7 +159,7 @@ static const char* _simpleXmlSkipXmlEntities(const char* itr, const char* itrEnd static const char* _simpleXmlUnskipXmlEntities(const char* itr, const char* itrStart) { auto p = itr; - while (*(itr - 1) == ';' && itr > itrStart) { + while (itr > itrStart && *(itr - 1) == ';') { for (int i = 0; i < NUMBER_OF_XML_ENTITIES; ++i) { if (itr - xmlEntityLength[i] > itrStart && strncmp(itr - xmlEntityLength[i], xmlEntity[i], xmlEntityLength[i]) == 0) {