summaryrefslogtreecommitdiffstats
path: root/src/core/hle/service/am/am.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/hle/service/am/am.cpp')
-rw-r--r--src/core/hle/service/am/am.cpp16
1 files changed, 9 insertions, 7 deletions
diff --git a/src/core/hle/service/am/am.cpp b/src/core/hle/service/am/am.cpp
index ecf72ae24..2dc647ec8 100644
--- a/src/core/hle/service/am/am.cpp
+++ b/src/core/hle/service/am/am.cpp
@@ -26,6 +26,8 @@
namespace Service::AM {
+constexpr std::size_t POP_LAUNCH_PARAMETER_BUFFER_SIZE = 0x88;
+
IWindowController::IWindowController() : ServiceFramework("IWindowController") {
// clang-format off
static const FunctionInfo functions[] = {
@@ -724,16 +726,16 @@ void IApplicationFunctions::EndBlockingHomeButton(Kernel::HLERequestContext& ctx
}
void IApplicationFunctions::PopLaunchParameter(Kernel::HLERequestContext& ctx) {
- constexpr std::array<u8, 0x88> data{{
+ constexpr std::array<u8, 0x8> header_data{
0xca, 0x97, 0x94, 0xc7, // Magic
1, 0, 0, 0, // IsAccountSelected (bool)
- 1, 0, 0, 0, // User Id (word 0)
- 0, 0, 0, 0, // User Id (word 1)
- 0, 0, 0, 0, // User Id (word 2)
- 0, 0, 0, 0 // User Id (word 3)
- }};
+ };
+
+ std::vector<u8> buffer(POP_LAUNCH_PARAMETER_BUFFER_SIZE);
- std::vector<u8> buffer(data.begin(), data.end());
+ std::memcpy(buffer.data(), header_data.data(), header_data.size());
+ const auto current_uuid = Settings::values.users[Settings::values.current_user].second.uuid;
+ std::memcpy(buffer.data() + header_data.size(), current_uuid.data(), sizeof(u128));
IPC::ResponseBuilder rb{ctx, 2, 0, 1};