From d31e79ebc8cd2d12946f1d09707cbb84d0ab51c5 Mon Sep 17 00:00:00 2001 From: wheremyfoodat <44909372+wheremyfoodat@users.noreply.github.com> Date: Wed, 20 Dec 2023 19:32:07 +0200 Subject: [PATCH] [SelfNCCH] Fix reading from end of RomFS --- src/core/fs/archive_self_ncch.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/core/fs/archive_self_ncch.cpp b/src/core/fs/archive_self_ncch.cpp index 9c911769..9369152d 100644 --- a/src/core/fs/archive_self_ncch.cpp +++ b/src/core/fs/archive_self_ncch.cpp @@ -83,7 +83,7 @@ std::optional SelfNCCHArchive::readFile(FileSession* file, u64 offset, u32 case PathType::RomFS: { const u64 romFSSize = cxi->romFS.size; const u64 romFSOffset = cxi->romFS.offset; - if ((offset >> 32) || (offset >= romFSSize) || (offset + size >= romFSSize)) { + if ((offset >> 32) || (offset >= romFSSize) || (offset + size > romFSSize)) { Helpers::panic("Tried to read from SelfNCCH with too big of an offset"); } @@ -95,7 +95,7 @@ std::optional SelfNCCHArchive::readFile(FileSession* file, u64 offset, u32 case PathType::ExeFS: { const u64 exeFSSize = cxi->exeFS.size; const u64 exeFSOffset = cxi->exeFS.offset; - if ((offset >> 32) || (offset >= exeFSSize) || (offset + size >= exeFSSize)) { + if ((offset >> 32) || (offset >= exeFSSize) || (offset + size > exeFSSize)) { Helpers::panic("Tried to read from SelfNCCH with too big of an offset"); } @@ -110,7 +110,7 @@ std::optional SelfNCCHArchive::readFile(FileSession* file, u64 offset, u32 const u64 romFSSize = cxi->romFS.size; const u64 romFSOffset = cxi->romFS.offset; - if ((offset >> 32) || (offset >= romFSSize) || (offset + size >= romFSSize)) { + if ((offset >> 32) || (offset >= romFSSize) || (offset + size > romFSSize)) { Helpers::panic("Tried to read from SelfNCCH with too big of an offset"); } @@ -129,7 +129,7 @@ std::optional SelfNCCHArchive::readFile(FileSession* file, u64 offset, u32 switch (type) { case PathType::RomFS: { const u64 romFSSize = hb3dsx->romFSSize; - if ((offset >> 32) || (offset >= romFSSize) || (offset + size >= romFSSize)) { + if ((offset >> 32) || (offset >= romFSSize) || (offset + size > romFSSize)) { Helpers::panic("Tried to read from SelfNCCH with too big of an offset"); } break; @@ -150,4 +150,4 @@ std::optional SelfNCCHArchive::readFile(FileSession* file, u64 offset, u32 } return u32(bytesRead); -} \ No newline at end of file +}