From 17bcd07095e8f45a207f4fd91a1e3ba796d1c00e Mon Sep 17 00:00:00 2001 From: Michael Scire Date: Wed, 7 May 2025 12:46:20 -0700 Subject: [PATCH] fsp-pr: update RegisterProgram for 20.0.0 change --- nx/include/switch/services/fspr.h | 2 +- nx/source/services/fspr.c | 7 ++++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/nx/include/switch/services/fspr.h b/nx/include/switch/services/fspr.h index 33eaed72..d4d232c9 100644 --- a/nx/include/switch/services/fspr.h +++ b/nx/include/switch/services/fspr.h @@ -18,7 +18,7 @@ void fsprExit(void); /// Gets the Service object for the actual fsp-pr service session. Service* fsprGetServiceSession(void); -Result fsprRegisterProgram(u64 pid, u64 tid, NcmStorageId sid, const void *fs_access_header, size_t fah_size, const void *fs_access_control, size_t fac_size); +Result fsprRegisterProgram(u64 pid, u64 tid, NcmStorageId sid, const void *fs_access_header, size_t fah_size, const void *fs_access_control, size_t fac_size, u8 fs_access_control_restriction_mode); Result fsprUnregisterProgram(u64 pid); Result fsprSetCurrentProcess(void); Result fsprSetEnabledProgramVerification(bool enabled); diff --git a/nx/source/services/fspr.c b/nx/source/services/fspr.c index 8afbf2cc..38026bc7 100644 --- a/nx/source/services/fspr.c +++ b/nx/source/services/fspr.c @@ -32,7 +32,7 @@ Service* fsprGetServiceSession(void) { static const uint32_t g_fspr_default_fah[] = {0x1, 0xFFFFFFFF, 0xFFFFFFFF, 0x1C, 0, 0x1C, 0}; static const uint32_t g_fspr_default_fac[] = {0x1, 0xFFFFFFFF, 0xFFFFFFFF, 0, 0, 0xFFFFFFFF, 0xFFFFFFFF, 0, 0, 0xFFFFFFFF, 0xFFFFFFFF}; -Result fsprRegisterProgram(u64 pid, u64 tid, NcmStorageId sid, const void *fs_access_header, size_t fah_size, const void *fs_access_control, size_t fac_size) { +Result fsprRegisterProgram(u64 pid, u64 tid, NcmStorageId sid, const void *fs_access_header, size_t fah_size, const void *fs_access_control, size_t fac_size, u8 fs_access_control_restriction_mode) { if (fs_access_header == NULL) { fs_access_header = g_fspr_default_fah; fah_size = sizeof(g_fspr_default_fah); @@ -44,12 +44,13 @@ Result fsprRegisterProgram(u64 pid, u64 tid, NcmStorageId sid, const void *fs_ac const struct { u8 sid; - u8 pad[7]; + u8 fs_access_control_restriction_mode; + u8 pad[6]; u64 pid; u64 tid; u64 fah_size; u64 fac_size; - } in = { sid, {0}, pid, tid, fah_size, fac_size }; + } in = { sid, fs_access_control_restriction_mode, {0}, pid, tid, fah_size, fac_size }; serviceAssumeDomain(&g_fsprSrv); return serviceDispatchIn(&g_fsprSrv, 0, in, .buffer_attrs = {