diff --git a/sysmodules/loader/source/file_util.h b/sysmodules/loader/source/file_util.h index 21aee71..f7733e0 100644 --- a/sysmodules/loader/source/file_util.h +++ b/sysmodules/loader/source/file_util.h @@ -15,7 +15,7 @@ namespace util { inline FS_Path MakePath(const char *path) { - return {PATH_ASCII, strnlen(path, 255) + 1, path}; + return fsMakePath(PATH_ASCII, path); } // A small wrapper to make forgetting to close a file and diff --git a/sysmodules/loader/source/patcher.c b/sysmodules/loader/source/patcher.c index 10c6b04..fe5e1d3 100644 --- a/sysmodules/loader/source/patcher.c +++ b/sysmodules/loader/source/patcher.c @@ -28,12 +28,9 @@ static u32 patchMemory(u8 *start, u32 size, const void *pattern, u32 patSize, s3 return i; } -Result fileOpen(IFile *file, FS_ArchiveID archiveId, const char *path, int flags) +static Result fileOpen(IFile *file, FS_ArchiveID archiveId, const char *path, u32 flags) { - FS_Path filePath = {PATH_ASCII, strnlen(path, 255) + 1, path}, - archivePath = {PATH_EMPTY, 1, (u8 *)""}; - - return IFile_Open(file, archiveId, archivePath, filePath, flags); + return IFile_Open(file, archiveId, fsMakePath(PATH_ASCII, path), fsMakePath(PATH_EMPTY, ""), flags); } static bool dirCheck(FS_ArchiveID archiveId, const char *path) @@ -41,13 +38,11 @@ static bool dirCheck(FS_ArchiveID archiveId, const char *path) bool ret; Handle handle; FS_Archive archive; - FS_Path dirPath = {PATH_ASCII, strnlen(path, 255) + 1, path}, - archivePath = {PATH_EMPTY, 1, (u8 *)""}; - if(R_FAILED(FSUSER_OpenArchive(&archive, archiveId, archivePath))) ret = false; + if(R_FAILED(FSUSER_OpenArchive(&archive, archiveId, fsMakePath(PATH_EMPTY, "")))) ret = false; else { - ret = R_SUCCEEDED(FSUSER_OpenDirectory(&handle, archive, dirPath)); + ret = R_SUCCEEDED(FSUSER_OpenDirectory(&handle, archive, fsMakePath(PATH_ASCII, path))); if(ret) FSDIR_Close(handle); FSUSER_CloseArchive(archive); } @@ -519,7 +514,7 @@ static inline bool patchLayeredFs(u64 progId, u8 *code, u32 size, u32 textSize, //Locate update RomFSes for(updateRomFsIndex = 0; updateRomFsIndex < sizeof(updateRomFsMounts) / sizeof(char *) - 1; updateRomFsIndex++) { - u32 patternSize = strnlen(updateRomFsMounts[updateRomFsIndex], 255); + u32 patternSize = strlen(updateRomFsMounts[updateRomFsIndex]); u8 temp[7]; temp[0] = 0; memcpy(temp + 1, updateRomFsMounts[updateRomFsIndex], patternSize); @@ -834,10 +829,10 @@ void patchCode(u64 progId, u16 progVer, u8 *code, u32 size, u32 textSize, u32 ro patch, sizeof(patch), 1 )) goto error; - + // Patch DLP client region check u8 *found = memsearch(code, pattern2, textSize, sizeof(pattern2)); - + if (!patchMemory(found, textSize, pattern3, sizeof(pattern3), 1, diff --git a/sysmodules/loader/source/patcher.h b/sysmodules/loader/source/patcher.h index afc1507..f024824 100644 --- a/sysmodules/loader/source/patcher.h +++ b/sysmodules/loader/source/patcher.h @@ -43,6 +43,5 @@ extern u32 config, multiConfig, bootConfig; extern bool isN3DS, isSdMode; void patchCode(u64 progId, u16 progVer, u8 *code, u32 size, u32 textSize, u32 roSize, u32 dataSize, u32 roAddress, u32 dataAddress); -Result fileOpen(IFile *file, FS_ArchiveID archiveId, const char *path, int flags); bool loadTitleCodeSection(u64 progId, u8 *code, u32 size); bool loadTitleExheaderInfo(u64 progId, ExHeader_Info *exheaderInfo);