summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZephyron <zephyron@citron-emu.org>2025-02-08 19:45:27 +1000
committerZephyron <zephyron@citron-emu.org>2025-02-08 19:45:27 +1000
commitb89a85e22839a9c8b024520b954767a773e9a8cf (patch)
tree1ed0916da065222b3ba1a9d111f88f206099f4c5
parentcc4819744823ee7ebc0ca41533d2b0b938a72a53 (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.cpp2
-rw-r--r--src/core/hle/service/set/system_settings_server.h15
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: