diff options
Diffstat (limited to 'src/core/loader')
| -rw-r--r-- | src/core/loader/loader.cpp | 4 | ||||
| -rw-r--r-- | src/core/loader/loader.h | 6 | ||||
| -rw-r--r-- | src/core/loader/nro.cpp | 2 | ||||
| -rw-r--r-- | src/core/loader/nso.cpp | 18 |
4 files changed, 15 insertions, 15 deletions
diff --git a/src/core/loader/loader.cpp b/src/core/loader/loader.cpp index 1574345a1..e70f37677 100644 --- a/src/core/loader/loader.cpp +++ b/src/core/loader/loader.cpp @@ -87,8 +87,8 @@ const char* GetFileTypeString(FileType type) { * Get a loader for a file with a specific type * @param file The file to load * @param type The type of the file - * @param filename the file name (without path) - * @param filepath the file full path (with name) + * @param file the file to retrieve the loader for + * @param type the file type * @return std::unique_ptr<AppLoader> a pointer to a loader object; nullptr for unsupported type */ static std::unique_ptr<AppLoader> GetFileLoader(FileSys::VirtualFile file, FileType type) { diff --git a/src/core/loader/loader.h b/src/core/loader/loader.h index 1da9e8099..6f517ca8c 100644 --- a/src/core/loader/loader.h +++ b/src/core/loader/loader.h @@ -154,7 +154,7 @@ public: /** * Get the RomFS of the application * Since the RomFS can be huge, we return a file reference instead of copying to a buffer - * @param file The file containing the RomFS + * @param dir The directory containing the RomFS * @return ResultStatus result of function */ virtual ResultStatus ReadRomFS(FileSys::VirtualFile& dir) { @@ -193,8 +193,8 @@ extern const std::initializer_list<Kernel::AddressMapping> default_address_mappi /** * Identifies a bootable file and return a suitable loader - * @param filename String filename of bootable file - * @return best loader for this file + * @param file The bootable file + * @return the best loader for this file */ std::unique_ptr<AppLoader> GetLoader(FileSys::VirtualFile file); diff --git a/src/core/loader/nro.cpp b/src/core/loader/nro.cpp index a007d3e6e..465b827bb 100644 --- a/src/core/loader/nro.cpp +++ b/src/core/loader/nro.cpp @@ -82,7 +82,7 @@ bool AppLoader_NRO::LoadNro(FileSys::VirtualFile file, VAddr load_base) { if (program_image.size() != PageAlignSize(nro_header.file_size)) return {}; - for (int i = 0; i < nro_header.segments.size(); ++i) { + for (std::size_t i = 0; i < nro_header.segments.size(); ++i) { codeset->segments[i].addr = nro_header.segments[i].offset; codeset->segments[i].offset = nro_header.segments[i].offset; codeset->segments[i].size = PageAlignSize(nro_header.segments[i].size); diff --git a/src/core/loader/nso.cpp b/src/core/loader/nso.cpp index 2beb85fbf..c66561bf4 100644 --- a/src/core/loader/nso.cpp +++ b/src/core/loader/nso.cpp @@ -55,19 +55,20 @@ AppLoader_NSO::AppLoader_NSO(FileSys::VirtualFile file) : AppLoader(std::move(fi FileType AppLoader_NSO::IdentifyType(const FileSys::VirtualFile& file) { u32 magic = 0; - file->ReadObject(&magic); + if (file->ReadObject(&magic) != sizeof(magic)) { + return FileType::Error; + } - if (Common::MakeMagic('N', 'S', 'O', '0') == magic) { - return FileType::NSO; + if (Common::MakeMagic('N', 'S', 'O', '0') != magic) { + return FileType::Error; } - return FileType::Error; + return FileType::NSO; } static std::vector<u8> DecompressSegment(const std::vector<u8>& compressed_data, const NsoSegmentHeader& header) { - std::vector<u8> uncompressed_data; - uncompressed_data.resize(header.size); + std::vector<u8> uncompressed_data(header.size); const int bytes_uncompressed = LZ4_decompress_safe( reinterpret_cast<const char*>(compressed_data.data()), reinterpret_cast<char*>(uncompressed_data.data()), compressed_data.size(), header.size); @@ -80,8 +81,7 @@ static std::vector<u8> DecompressSegment(const std::vector<u8>& compressed_data, static std::vector<u8> ReadSegment(FileUtil::IOFile& file, const NsoSegmentHeader& header, size_t compressed_size) { - std::vector<u8> compressed_data; - compressed_data.resize(compressed_size); + std::vector<u8> compressed_data(compressed_size); file.Seek(header.offset, SEEK_SET); if (compressed_size != file.ReadBytes(compressed_data.data(), compressed_size)) { @@ -113,7 +113,7 @@ VAddr AppLoader_NSO::LoadModule(FileSys::VirtualFile file, VAddr load_base) { // Build program image Kernel::SharedPtr<Kernel::CodeSet> codeset = Kernel::CodeSet::Create(""); std::vector<u8> program_image; - for (int i = 0; i < nso_header.segments.size(); ++i) { + for (std::size_t i = 0; i < nso_header.segments.size(); ++i) { const std::vector<u8> compressed_data = file->ReadBytes(nso_header.segments_compressed_size[i], nso_header.segments[i].offset); std::vector<u8> data = DecompressSegment(compressed_data, nso_header.segments[i]); |
