mirror of
				https://github.com/PabloMK7/citra.git
				synced 2025-10-30 21:30:04 +00:00 
			
		
		
		
	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
					
				
					 2 changed files with 11 additions and 5 deletions
				
			
		|  | @ -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_high : entries.children) { | ||||||
|         for (const FileUtil::FSTEntry& tid_low : tid_high.children) { |         for (const FileUtil::FSTEntry& tid_low : tid_high.children) { | ||||||
|             std::string tid_string = tid_high.virtualName + tid_low.virtualName; |             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 (tid_string.length() == TITLE_ID_VALID_LENGTH) { | ||||||
|             if (container.Load() == Loader::ResultStatus::Success) |                 u64 tid = std::stoull(tid_string.c_str(), nullptr, 16); | ||||||
|                 am_title_list[static_cast<u32>(media_type)].push_back(tid); | 
 | ||||||
|  |                 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, |     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); | using ProgressCallback = void(size_t, size_t); | ||||||
| 
 | 
 | ||||||
| // A file handled returned for CIAs to be written into and subsequently installed.
 | // A file handled returned for CIAs to be written into and subsequently installed.
 | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue