From d853741f6f95b44d6ab22dbda8329328b9f739dd Mon Sep 17 00:00:00 2001 From: Lynix Date: Sat, 19 Mar 2022 17:44:39 +0100 Subject: [PATCH] Core/StringExt: Fix out of range read --- .github/workflows/linux-build.yml | 1 + .github/workflows/msys2-build.yml | 1 + src/Nazara/Core/StringExt.cpp | 4 ++++ 3 files changed, 6 insertions(+) diff --git a/.github/workflows/linux-build.yml b/.github/workflows/linux-build.yml index 089f27368..f42ec9773 100644 --- a/.github/workflows/linux-build.yml +++ b/.github/workflows/linux-build.yml @@ -71,6 +71,7 @@ jobs: # Run unit tests - name: Run unit tests + if: matrix.type.name != 'releasedbg' run: xmake run NazaraUnitTests # Install the result files diff --git a/.github/workflows/msys2-build.yml b/.github/workflows/msys2-build.yml index 562a7b612..6a3a9e73e 100644 --- a/.github/workflows/msys2-build.yml +++ b/.github/workflows/msys2-build.yml @@ -82,6 +82,7 @@ jobs: # Run unit tests - name: Run unit tests + if: matrix.type.name != 'releasedbg' run: xmake run NazaraUnitTests # Install the result files diff --git a/src/Nazara/Core/StringExt.cpp b/src/Nazara/Core/StringExt.cpp index a30ca88ba..6419e4171 100644 --- a/src/Nazara/Core/StringExt.cpp +++ b/src/Nazara/Core/StringExt.cpp @@ -116,6 +116,8 @@ namespace Nz return lhs == rhs; else if (rhs.empty()) return true; + else if (rhs.size() > lhs.size()) + return false; utf8::iterator it(lhs.data() + lhs.size() - rhs.size(), lhs.data() + lhs.size() - rhs.size(), lhs.data() + lhs.size()); utf8::iterator it2(rhs.data(), rhs.data(), rhs.data() + rhs.size()); @@ -140,6 +142,8 @@ namespace Nz return lhs == rhs; else if (rhs.empty()) return true; + else if (rhs.size() > lhs.size()) + return false; utf8::iterator it(lhs.data() + lhs.size() - rhs.size(), lhs.data() + lhs.size() - rhs.size(), lhs.data() + lhs.size()); utf8::iterator it2(rhs.data(), rhs.data(), rhs.data() + rhs.size());