From b89a85e22839a9c8b024520b954767a773e9a8cf Mon Sep 17 00:00:00 2001 From: Zephyron Date: Sat, 8 Feb 2025 19:45:27 +1000 Subject: [PATCH] service/set: improve settings handling and update serial number - Update default console serial number prefix from "YUZ" to "CIT" - Improve GetSettingsItemValueImpl template implementation: * Add proper buffer management using std::vector * Fix potential buffer overflow issues * Use clearer variable naming * Add proper size handling with actual_size * Use memcpy for safer data copying These changes improve the safety of settings handling while updating the emulator's identity to use the Citron prefix instead of yuzu's. --- .../hle/service/set/system_settings_server.cpp | 2 +- src/core/hle/service/set/system_settings_server.h | 15 ++++++++++----- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/src/core/hle/service/set/system_settings_server.cpp b/src/core/hle/service/set/system_settings_server.cpp index 3118d6621..41a690ba7 100644 --- a/src/core/hle/service/set/system_settings_server.cpp +++ b/src/core/hle/service/set/system_settings_server.cpp @@ -939,7 +939,7 @@ Result ISystemSettingsServer::GetBatteryLot(Out out_battery_lot) { Result ISystemSettingsServer::GetSerialNumber(Out out_console_serial) { LOG_INFO(Service_SET, "called"); - *out_console_serial = {"YUZ10000000001"}; + *out_console_serial = SerialNumber{"CIT10000000001"}; R_SUCCEED(); } diff --git a/src/core/hle/service/set/system_settings_server.h b/src/core/hle/service/set/system_settings_server.h index 0e1e470a8..11ef2cc33 100644 --- a/src/core/hle/service/set/system_settings_server.h +++ b/src/core/hle/service/set/system_settings_server.h @@ -38,11 +38,16 @@ public: const std::string& category, const std::string& name); template - Result GetSettingsItemValueImpl(T& out_value, const std::string& category, - const std::string& name) { - u64 size{}; - R_RETURN(GetSettingsItemValueImpl(std::span{reinterpret_cast(&out_value), sizeof(T)}, - size, category, name)); + Result GetSettingsItemValueImpl(T& output_value, const std::string& category, + const std::string& name) { + const size_t value_size = sizeof(T); + std::vector raw_data(value_size); + u64 actual_size{}; + + R_TRY(GetSettingsItemValueImpl(raw_data, actual_size, category, name)); + std::memcpy(&output_value, raw_data.data(), actual_size); + + R_SUCCEED(); } public: