Service/AM: Fix crash when scanning titles with installed titles with invalid title IDs (#3542)
* Service/AM: Fix crash when scanning titles with installed titles with invalid title IDs Fixes #3332
This commit is contained in:
parent
327ad8bcce
commit
e2c5666883
@ -456,11 +456,14 @@ void Module::ScanForTitles(Service::FS::MediaType media_type) {
|
||||
for (const FileUtil::FSTEntry& tid_high : entries.children) {
|
||||
for (const FileUtil::FSTEntry& tid_low : tid_high.children) {
|
||||
std::string tid_string = tid_high.virtualName + tid_low.virtualName;
|
||||
u64 tid = std::stoull(tid_string.c_str(), nullptr, 16);
|
||||
|
||||
FileSys::NCCHContainer container(GetTitleContentPath(media_type, tid));
|
||||
if (container.Load() == Loader::ResultStatus::Success)
|
||||
am_title_list[static_cast<u32>(media_type)].push_back(tid);
|
||||
if (tid_string.length() == TITLE_ID_VALID_LENGTH) {
|
||||
u64 tid = std::stoull(tid_string.c_str(), nullptr, 16);
|
||||
|
||||
FileSys::NCCHContainer container(GetTitleContentPath(media_type, tid));
|
||||
if (container.Load() == Loader::ResultStatus::Success)
|
||||
am_title_list[static_cast<u32>(media_type)].push_back(tid);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -52,7 +52,10 @@ enum class InstallStatus : u32 {
|
||||
ErrorEncrypted,
|
||||
};
|
||||
|
||||
// Progress callback for InstallCIA, recieves bytes written and total bytes
|
||||
// Title ID valid length
|
||||
constexpr size_t TITLE_ID_VALID_LENGTH = 16;
|
||||
|
||||
// Progress callback for InstallCIA, receives bytes written and total bytes
|
||||
using ProgressCallback = void(size_t, size_t);
|
||||
|
||||
// A file handled returned for CIAs to be written into and subsequently installed.
|
||||
|
Loading…
Reference in New Issue
Block a user