From d232bdbecf0d1370caade09ef8337e283dfef9be Mon Sep 17 00:00:00 2001 From: Gliniak Date: Fri, 13 Sep 2024 12:21:21 +0200 Subject: [PATCH] [UTIL] Fixed bug in TranslateUnicodeString code It was incorrectly copying length in bytes instead of character count which was causing out of bounds access and string corruption --- src/xenia/kernel/util/shim_utils.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/xenia/kernel/util/shim_utils.h b/src/xenia/kernel/util/shim_utils.h index 78a74b6ec..bf301a38b 100644 --- a/src/xenia/kernel/util/shim_utils.h +++ b/src/xenia/kernel/util/shim_utils.h @@ -116,7 +116,7 @@ inline std::u16string TranslateUnicodeString( unicode_string->pointer); std::u16string translated_string; translated_string.reserve(length); - for (uint16_t i = 0; i < length; ++i) { + for (uint16_t i = 0; i < length / sizeof(uint16_t); ++i) { translated_string += char16_t(uint16_t(guest_string[i])); } return translated_string;