diff options
author | Morph <39850852+Morph1984@users.noreply.github.com> | 2021-10-14 19:11:08 +0200 |
---|---|---|
committer | Morph <39850852+Morph1984@users.noreply.github.com> | 2021-10-14 20:09:34 +0200 |
commit | 0d6057b2fa98f08a461edaf584e9ac75f7fdecde (patch) | |
tree | 8c641f7adf5387c40601cd335bac9bd4097c815b | |
parent | string_util: Prevent out of bounds access in u16string_view buffer (diff) | |
download | yuzu-0d6057b2fa98f08a461edaf584e9ac75f7fdecde.tar yuzu-0d6057b2fa98f08a461edaf584e9ac75f7fdecde.tar.gz yuzu-0d6057b2fa98f08a461edaf584e9ac75f7fdecde.tar.bz2 yuzu-0d6057b2fa98f08a461edaf584e9ac75f7fdecde.tar.lz yuzu-0d6057b2fa98f08a461edaf584e9ac75f7fdecde.tar.xz yuzu-0d6057b2fa98f08a461edaf584e9ac75f7fdecde.tar.zst yuzu-0d6057b2fa98f08a461edaf584e9ac75f7fdecde.zip |
-rw-r--r-- | src/common/string_util.cpp | 8 | ||||
-rw-r--r-- | src/common/string_util.h | 2 |
2 files changed, 5 insertions, 5 deletions
diff --git a/src/common/string_util.cpp b/src/common/string_util.cpp index 9617c3fa3..662171138 100644 --- a/src/common/string_util.cpp +++ b/src/common/string_util.cpp @@ -180,12 +180,12 @@ std::wstring UTF8ToUTF16W(const std::string& input) { #endif -std::string StringFromFixedZeroTerminatedBuffer(const char* buffer, std::size_t max_len) { +std::string StringFromFixedZeroTerminatedBuffer(std::string_view buffer, std::size_t max_len) { std::size_t len = 0; - while (len < max_len && buffer[len] != '\0') + while (len < buffer.length() && len < max_len && buffer[len] != '\0') { ++len; - - return std::string(buffer, len); + } + return std::string(buffer.begin(), buffer.begin() + len); } std::u16string UTF16StringFromFixedZeroTerminatedBuffer(std::u16string_view buffer, diff --git a/src/common/string_util.h b/src/common/string_util.h index 7e90a9ca5..f0dd632ee 100644 --- a/src/common/string_util.h +++ b/src/common/string_util.h @@ -63,7 +63,7 @@ template <typename InIt> * Creates a std::string from a fixed-size NUL-terminated char buffer. If the buffer isn't * NUL-terminated then the string ends at max_len characters. */ -[[nodiscard]] std::string StringFromFixedZeroTerminatedBuffer(const char* buffer, +[[nodiscard]] std::string StringFromFixedZeroTerminatedBuffer(std::string_view buffer, std::size_t max_len); /** |