2
0
mirror of https://github.com/AxioDL/metaforce.git synced 2025-12-08 23:47:42 +00:00

CStringExtras: Prevent potential out of bounds reads with CompareCaseInsensitive

The strcasecmp and _stricmp functions expect the passed in strings to
be null-terminated, however we we're also exposing a std::string_view
overload for that function. std::string_view instances aren't required
to be null-terminated, so this makes the interface a little unsafe.

We can use std::lexicographical_compare() to provide the same behavior
and also properly handle the case of non-null-terminated strings.
This commit is contained in:
Lioncash
2019-09-14 11:14:51 -04:00
parent 002ca71104
commit 0d2b2f45a8
5 changed files with 30 additions and 18 deletions

View File

@@ -10,8 +10,9 @@
namespace urde {
bool CScriptStreamedMusic::IsDSPFile(std::string_view fileName) {
if (!CStringExtras::CompareCaseInsensitive(fileName, "sw"))
if (CStringExtras::CompareCaseInsensitive(fileName, "sw")) {
return true;
}
return CStringExtras::IndexOfSubstring(fileName, ".dsp") != -1;
}