mirror of
https://git.eden-emu.dev/eden-emu/eden.git
synced 2025-07-21 22:45:45 +00:00
loader/nso: Check if read succeeded in IdentifyFile() before checking magic value
We should always assume the filesystem is volatile and check each IO operation. While we're at it reorganize checks so that early-out errors are near one another.
This commit is contained in:
parent
f15104730f
commit
71dc75b71e
1 changed files with 7 additions and 5 deletions
|
@ -55,15 +55,17 @@ AppLoader_NSO::AppLoader_NSO(FileSys::VirtualFile file) : AppLoader(std::move(fi
|
||||||
|
|
||||||
FileType AppLoader_NSO::IdentifyType(const FileSys::VirtualFile& file) {
|
FileType AppLoader_NSO::IdentifyType(const FileSys::VirtualFile& file) {
|
||||||
u32 magic = 0;
|
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,
|
static std::vector<u8> DecompressSegment(const std::vector<u8>& compressed_data,
|
||||||
const NsoSegmentHeader& header) {
|
const NsoSegmentHeader& header) {
|
||||||
std::vector<u8> uncompressed_data;
|
std::vector<u8> uncompressed_data;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue