From 36bda1cb58fde00acd69cdc4959a18fe0411dd7a Mon Sep 17 00:00:00 2001 From: Steveice10 <1269164+Steveice10@users.noreply.github.com> Date: Sun, 26 Mar 2023 19:58:33 -0700 Subject: [PATCH] Remove incorrect ExeFS header hash validation. --- ctrtool/deps/libnintendo-n3ds/src/ExeFsSnapshotGenerator.cpp | 4 ++-- ctrtool/src/ExeFsProcess.cpp | 4 ++-- ctrtool/src/NcchProcess.cpp | 3 +-- 3 files changed, 5 insertions(+), 6 deletions(-) diff --git a/ctrtool/deps/libnintendo-n3ds/src/ExeFsSnapshotGenerator.cpp b/ctrtool/deps/libnintendo-n3ds/src/ExeFsSnapshotGenerator.cpp index 424e5a6d..72371c85 100644 --- a/ctrtool/deps/libnintendo-n3ds/src/ExeFsSnapshotGenerator.cpp +++ b/ctrtool/deps/libnintendo-n3ds/src/ExeFsSnapshotGenerator.cpp @@ -33,7 +33,7 @@ ntd::n3ds::ExeFsSnapshotGenerator::ExeFsSnapshotGenerator(const std::shared_ptr< stream->seek(0, tc::io::SeekOrigin::Begin); stream->read((byte_t*)(&hdr), sizeof(ntd::n3ds::ExeFsHeader)); - if (hdr.file_table[0].name[0] == 0 || hdr.file_table[0].offset.unwrap() != 0 || hdr.hash_table[ntd::n3ds::ExeFsHeader::kFileNum - 1][0] == 0) + if (hdr.file_table[0].name[0] == 0 || hdr.file_table[0].offset.unwrap() != 0) { throw tc::ArgumentOutOfRangeException("ntd::n3ds::ExeFsSnapshotGenerator", "ExeFsHeader is corrupted (Bad first entry)."); } @@ -119,4 +119,4 @@ ntd::n3ds::ExeFsSnapshotGenerator::ExeFsSnapshotGenerator(const std::shared_ptr< cur_dir->dir_listing.file_list.push_back(section[i].name); } } -} \ No newline at end of file +} diff --git a/ctrtool/src/ExeFsProcess.cpp b/ctrtool/src/ExeFsProcess.cpp index 3d6c62f7..36475ee3 100644 --- a/ctrtool/src/ExeFsProcess.cpp +++ b/ctrtool/src/ExeFsProcess.cpp @@ -94,7 +94,7 @@ void ctrtool::ExeFsProcess::importHeader() mInputStream->read((byte_t*)&mHeader, sizeof(ntd::n3ds::ExeFsHeader)); // do some simple checks to verify if this is an EXEFS header - if (mHeader.file_table[0].name[0] == 0 || mHeader.file_table[0].offset.unwrap() != 0 || mHeader.hash_table[ntd::n3ds::ExeFsHeader::kFileNum - 1][0] == 0) + if (mHeader.file_table[0].name[0] == 0 || mHeader.file_table[0].offset.unwrap() != 0) { throw tc::ArgumentOutOfRangeException(mModuleLabel, "ExeFsHeader is corrupted (Bad first entry)."); } @@ -281,4 +281,4 @@ std::string ctrtool::ExeFsProcess::getValidString(byte_t validstate) } return ret_str; -} \ No newline at end of file +} diff --git a/ctrtool/src/NcchProcess.cpp b/ctrtool/src/NcchProcess.cpp index 30417229..e5f1dbc6 100644 --- a/ctrtool/src/NcchProcess.cpp +++ b/ctrtool/src/NcchProcess.cpp @@ -489,8 +489,7 @@ void ctrtool::NcchProcess::determineRegionEncryption() // quick header validation if (exefs_hdr.file_table[0].name[0] == 0 || - exefs_hdr.file_table[0].offset.unwrap() != 0 || - exefs_hdr.getFileHash(0)->operator[](0) == 0) + exefs_hdr.file_table[0].offset.unwrap() != 0) { throw tc::ArgumentOutOfRangeException(mModuleLabel, "ExeFsHeader is corrupted (Bad first entry)."); }