service: properly convert buffers to strings

This commit is contained in:
Narr the Reg 2024-01-23 10:24:05 -06:00
parent 8bd10473d6
commit fc5d76e6e2
3 changed files with 8 additions and 8 deletions

View File

@ -4,6 +4,7 @@
#include "common/logging/log.h" #include "common/logging/log.h"
#include "common/scope_exit.h" #include "common/scope_exit.h"
#include "common/string_util.h"
#include "core/core.h" #include "core/core.h"
#include "core/hle/kernel/k_event.h" #include "core/hle/kernel/k_event.h"
#include "core/hle/kernel/k_process.h" #include "core/hle/kernel/k_process.h"
@ -29,7 +30,7 @@ void NVDRV::Open(HLERequestContext& ctx) {
} }
const auto& buffer = ctx.ReadBuffer(); const auto& buffer = ctx.ReadBuffer();
const std::string device_name(buffer.begin(), buffer.end()); const std::string device_name(Common::StringFromBuffer(buffer));
if (device_name == "/dev/nvhost-prof-gpu") { if (device_name == "/dev/nvhost-prof-gpu") {
rb.Push<DeviceFD>(0); rb.Push<DeviceFD>(0);

View File

@ -710,12 +710,12 @@ void ISystemSettingsServer::GetSettingsItemValueSize(HLERequestContext& ctx) {
// The category of the setting. This corresponds to the top-level keys of // The category of the setting. This corresponds to the top-level keys of
// system_settings.ini. // system_settings.ini.
const auto setting_category_buf{ctx.ReadBuffer(0)}; const auto setting_category_buf{ctx.ReadBuffer(0)};
const std::string setting_category{setting_category_buf.begin(), setting_category_buf.end()}; const std::string setting_category{Common::StringFromBuffer(setting_category_buf)};
// The name of the setting. This corresponds to the second-level keys of // The name of the setting. This corresponds to the second-level keys of
// system_settings.ini. // system_settings.ini.
const auto setting_name_buf{ctx.ReadBuffer(1)}; const auto setting_name_buf{ctx.ReadBuffer(1)};
const std::string setting_name{setting_name_buf.begin(), setting_name_buf.end()}; const std::string setting_name{Common::StringFromBuffer(setting_name_buf)};
auto settings{GetSettings()}; auto settings{GetSettings()};
u64 response_size{0}; u64 response_size{0};
@ -733,12 +733,12 @@ void ISystemSettingsServer::GetSettingsItemValue(HLERequestContext& ctx) {
// The category of the setting. This corresponds to the top-level keys of // The category of the setting. This corresponds to the top-level keys of
// system_settings.ini. // system_settings.ini.
const auto setting_category_buf{ctx.ReadBuffer(0)}; const auto setting_category_buf{ctx.ReadBuffer(0)};
const std::string setting_category{setting_category_buf.begin(), setting_category_buf.end()}; const std::string setting_category{Common::StringFromBuffer(setting_category_buf)};
// The name of the setting. This corresponds to the second-level keys of // The name of the setting. This corresponds to the second-level keys of
// system_settings.ini. // system_settings.ini.
const auto setting_name_buf{ctx.ReadBuffer(1)}; const auto setting_name_buf{ctx.ReadBuffer(1)};
const std::string setting_name{setting_name_buf.begin(), setting_name_buf.end()}; const std::string setting_name{Common::StringFromBuffer(setting_name_buf)};
std::vector<u8> value; std::vector<u8> value;
auto response = GetSettingsItemValue(value, setting_category, setting_name); auto response = GetSettingsItemValue(value, setting_category, setting_name);

View File

@ -15,6 +15,7 @@
#include "common/logging/log.h" #include "common/logging/log.h"
#include "common/math_util.h" #include "common/math_util.h"
#include "common/settings.h" #include "common/settings.h"
#include "common/string_util.h"
#include "common/swap.h" #include "common/swap.h"
#include "core/core_timing.h" #include "core/core_timing.h"
#include "core/hle/kernel/k_readable_event.h" #include "core/hle/kernel/k_readable_event.h"
@ -694,9 +695,7 @@ private:
void OpenLayer(HLERequestContext& ctx) { void OpenLayer(HLERequestContext& ctx) {
IPC::RequestParser rp{ctx}; IPC::RequestParser rp{ctx};
const auto name_buf = rp.PopRaw<std::array<u8, 0x40>>(); const auto name_buf = rp.PopRaw<std::array<u8, 0x40>>();
const auto end = std::find(name_buf.begin(), name_buf.end(), '\0'); const std::string display_name(Common::StringFromBuffer(name_buf));
const std::string display_name(name_buf.begin(), end);
const u64 layer_id = rp.Pop<u64>(); const u64 layer_id = rp.Pop<u64>();
const u64 aruid = rp.Pop<u64>(); const u64 aruid = rp.Pop<u64>();