aboutsummaryrefslogtreecommitdiff
path: root/src/core/loader
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/loader')
-rw-r--r--src/core/loader/loader.cpp4
-rw-r--r--src/core/loader/loader.h6
-rw-r--r--src/core/loader/nro.cpp2
-rw-r--r--src/core/loader/nso.cpp18
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]);