summaryrefslogtreecommitdiff
path: root/src/core/hle
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 /src/core/hle
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.
Diffstat (limited to 'src/core/hle')
-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: