summaryrefslogtreecommitdiff
path: root/src/common/string_util.cpp
diff options
context:
space:
mode:
authorGravatar Mai M2021-10-15 17:04:44 -0400
committerGravatar GitHub2021-10-15 17:04:44 -0400
commit764369f4c7ac60f6a985f613bee4a02a20afb88d (patch)
tree2333d6f81aba1757e5a88778e35ca8dc1239de36 /src/common/string_util.cpp
parentMerge pull request #7174 from MightyCreak/hide-cursor-by-default (diff)
parentstring_util: Make use of std::string_view and add bounds checking (diff)
downloadyuzu-764369f4c7ac60f6a985f613bee4a02a20afb88d.tar.gz
yuzu-764369f4c7ac60f6a985f613bee4a02a20afb88d.tar.xz
yuzu-764369f4c7ac60f6a985f613bee4a02a20afb88d.zip
Merge pull request #7172 from Morph1984/out-of-bounds
string_util: Prevent out of bounds access in u16string_view buffer
Diffstat (limited to 'src/common/string_util.cpp')
-rw-r--r--src/common/string_util.cpp12
1 files changed, 6 insertions, 6 deletions
diff --git a/src/common/string_util.cpp b/src/common/string_util.cpp
index e6344fd41..662171138 100644
--- a/src/common/string_util.cpp
+++ b/src/common/string_util.cpp
@@ -180,20 +180,20 @@ std::wstring UTF8ToUTF16W(const std::string& input) {
180 180
181#endif 181#endif
182 182
183std::string StringFromFixedZeroTerminatedBuffer(const char* buffer, std::size_t max_len) { 183std::string StringFromFixedZeroTerminatedBuffer(std::string_view buffer, std::size_t max_len) {
184 std::size_t len = 0; 184 std::size_t len = 0;
185 while (len < max_len && buffer[len] != '\0') 185 while (len < buffer.length() && len < max_len && buffer[len] != '\0') {
186 ++len; 186 ++len;
187 187 }
188 return std::string(buffer, len); 188 return std::string(buffer.begin(), buffer.begin() + len);
189} 189}
190 190
191std::u16string UTF16StringFromFixedZeroTerminatedBuffer(std::u16string_view buffer, 191std::u16string UTF16StringFromFixedZeroTerminatedBuffer(std::u16string_view buffer,
192 std::size_t max_len) { 192 std::size_t max_len) {
193 std::size_t len = 0; 193 std::size_t len = 0;
194 while (len < max_len && buffer[len] != '\0') 194 while (len < buffer.length() && len < max_len && buffer[len] != '\0') {
195 ++len; 195 ++len;
196 196 }
197 return std::u16string(buffer.begin(), buffer.begin() + len); 197 return std::u16string(buffer.begin(), buffer.begin() + len);
198} 198}
199 199