diff --git a/src/core/hle/service/am/am.cpp b/src/core/hle/service/am/am.cpp index 031b295b77..40600e34ed 100644 --- a/src/core/hle/service/am/am.cpp +++ b/src/core/hle/service/am/am.cpp @@ -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(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(media_type)].push_back(tid); + } } } } diff --git a/src/core/hle/service/am/am.h b/src/core/hle/service/am/am.h index 220ca3f232..cc322375a3 100644 --- a/src/core/hle/service/am/am.h +++ b/src/core/hle/service/am/am.h @@ -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.