Merge pull request #1510 from lioncash/xci

XCI: Add function for checking the existence of the program NCA
This commit is contained in:
bunnei 2018-10-18 11:51:47 -04:00 committed by GitHub
commit d4ff4152ad
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 8 additions and 7 deletions

View File

@ -122,14 +122,16 @@ u64 XCI::GetProgramTitleID() const {
return secure_partition->GetProgramTitleID(); return secure_partition->GetProgramTitleID();
} }
std::shared_ptr<NCA> XCI::GetProgramNCA() const { bool XCI::HasProgramNCA() const {
return program; return program != nullptr;
} }
VirtualFile XCI::GetProgramNCAFile() const { VirtualFile XCI::GetProgramNCAFile() const {
if (GetProgramNCA() == nullptr) if (!HasProgramNCA()) {
return nullptr; return nullptr;
return GetProgramNCA()->GetBaseFile(); }
return program->GetBaseFile();
} }
const std::vector<std::shared_ptr<NCA>>& XCI::GetNCAs() const { const std::vector<std::shared_ptr<NCA>>& XCI::GetNCAs() const {

View File

@ -80,7 +80,7 @@ public:
u64 GetProgramTitleID() const; u64 GetProgramTitleID() const;
std::shared_ptr<NCA> GetProgramNCA() const; bool HasProgramNCA() const;
VirtualFile GetProgramNCAFile() const; VirtualFile GetProgramNCAFile() const;
const std::vector<std::shared_ptr<NCA>>& GetNCAs() const; const std::vector<std::shared_ptr<NCA>>& GetNCAs() const;
std::shared_ptr<NCA> GetNCAByType(NCAContentType type) const; std::shared_ptr<NCA> GetNCAByType(NCAContentType type) const;

View File

@ -59,8 +59,7 @@ ResultStatus AppLoader_XCI::Load(Kernel::Process& process) {
if (xci->GetProgramNCAStatus() != ResultStatus::Success) if (xci->GetProgramNCAStatus() != ResultStatus::Success)
return xci->GetProgramNCAStatus(); return xci->GetProgramNCAStatus();
const auto nca = xci->GetProgramNCA(); if (!xci->HasProgramNCA() && !Core::Crypto::KeyManager::KeyFileExists(false))
if (nca == nullptr && !Core::Crypto::KeyManager::KeyFileExists(false))
return ResultStatus::ErrorMissingProductionKeyFile; return ResultStatus::ErrorMissingProductionKeyFile;
const auto result = nca_loader->Load(process); const auto result = nca_loader->Load(process);