From 68f62e787fd1fc34e4b521e53b686e221c59fc2c Mon Sep 17 00:00:00 2001 From: klockee Date: Sat, 28 Jul 2018 02:18:03 +0000 Subject: [PATCH] Fix fsOpenBisFilesystem string formatting --- nx/source/services/fs.c | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/nx/source/services/fs.c b/nx/source/services/fs.c index 7df1536c..d7818e2f 100644 --- a/nx/source/services/fs.c +++ b/nx/source/services/fs.c @@ -104,38 +104,41 @@ Result fsOpenBisStorage(FsStorage* out, u32 PartitionId) { Result fsOpenBisFileSystem(FsFileSystem* out, u32 PartitionId, const char* string) { IpcCommand c; ipcInitialize(&c); - ipcAddSendStatic(&c, string, strlen(string) + 1, 0); + char tmpstr[FS_MAX_PATH] = {0}; + strncpy(tmpstr, string, sizeof(tmpstr)-1); + ipcAddSendStatic(&c, tmpstr, sizeof(tmpstr), 0); + struct { u64 magic; u64 cmd_id; u32 PartitionId; } *raw; - + raw = ipcPrepareHeader(&c, sizeof(*raw)); - + raw->magic = SFCI_MAGIC; raw->cmd_id = 11; raw->PartitionId = PartitionId; - + Result rc = serviceIpcDispatch(&g_fsSrv); - + if (R_SUCCEEDED(rc)) { IpcParsedCommand r; ipcParse(&r); - + struct { u64 magic; u64 result; } *resp = r.Raw; - + rc = resp->result; - + if (R_SUCCEEDED(rc)) { serviceCreate(&out->s, r.Handles[0]); } } - + return rc; }