diff options
author | Zephyron <zephyron@citron-emu.org> | 2025-02-08 19:45:27 +1000 |
---|---|---|
committer | Zephyron <zephyron@citron-emu.org> | 2025-02-08 19:45:27 +1000 |
commit | b89a85e22839a9c8b024520b954767a773e9a8cf (patch) | |
tree | 1ed0916da065222b3ba1a9d111f88f206099f4c5 | |
parent | cc4819744823ee7ebc0ca41533d2b0b938a72a53 (diff) |
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.
-rw-r--r-- | src/core/hle/service/set/system_settings_server.cpp | 2 | ||||
-rw-r--r-- | 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<BatteryLot> out_battery_lot) { Result ISystemSettingsServer::GetSerialNumber(Out<SerialNumber> 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 <typename T> - Result GetSettingsItemValueImpl(T& out_value, const std::string& category, - const std::string& name) { - u64 size{}; - R_RETURN(GetSettingsItemValueImpl(std::span{reinterpret_cast<u8*>(&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<u8> 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: |