From 3a42d9e7872d4eba76571fbfcaf8c70b9b9406eb Mon Sep 17 00:00:00 2001 From: Gliniak Date: Sun, 25 Aug 2024 20:21:05 +0200 Subject: [PATCH] [XAM] XamContentGetDeviceName param change XamContentGetDeviceName was using lpu16string_t for output parameter This could cause string parse error (conversion to utf16/utf8) --- src/xenia/kernel/xam/xam_content_device.cc | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/xenia/kernel/xam/xam_content_device.cc b/src/xenia/kernel/xam/xam_content_device.cc index c9689af84..f223b5f3c 100644 --- a/src/xenia/kernel/xam/xam_content_device.cc +++ b/src/xenia/kernel/xam/xam_content_device.cc @@ -74,7 +74,7 @@ std::vector ListStorageDevices(bool include_readonly) { } dword_result_t XamContentGetDeviceName_entry(dword_t device_id, - lpu16string_t name_buffer, + dword_t name_buffer_ptr, dword_t name_capacity) { auto device_info = GetDummyDeviceInfo(device_id); if (device_info == nullptr) { @@ -84,6 +84,10 @@ dword_result_t XamContentGetDeviceName_entry(dword_t device_id, if (name_capacity < name.size() + 1) { return X_ERROR_INSUFFICIENT_BUFFER; } + + char16_t* name_buffer = + kernel_memory()->TranslateVirtual(name_buffer_ptr); + xe::string_util::copy_and_swap_truncating(name_buffer, name, name_capacity); return X_ERROR_SUCCESS; }