diff --git a/Source/Core/Core/IOS/ES/TitleInformation.cpp b/Source/Core/Core/IOS/ES/TitleInformation.cpp index 4312c9d2c3..1517f367ec 100644 --- a/Source/Core/Core/IOS/ES/TitleInformation.cpp +++ b/Source/Core/Core/IOS/ES/TitleInformation.cpp @@ -97,7 +97,21 @@ IPCCommandResult ES::GetTMDStoredContents(const IOCtlVRequest& request) std::vector tmd_bytes(request.in_vectors[0].size); Memory::CopyFromEmu(tmd_bytes.data(), request.in_vectors[0].address, tmd_bytes.size()); - return GetStoredContents(IOS::ES::TMDReader{std::move(tmd_bytes)}, request); + + const IOS::ES::TMDReader tmd{std::move(tmd_bytes)}; + if (!tmd.IsValid()) + return GetDefaultReply(ES_EINVAL); + + std::vector cert_store; + ReturnCode ret = ReadCertStore(&cert_store); + if (ret != IPC_SUCCESS) + return GetDefaultReply(ret); + + ret = VerifyContainer(VerifyContainerType::TMD, VerifyMode::UpdateCertStore, tmd, cert_store); + if (ret != IPC_SUCCESS) + return GetDefaultReply(ret); + + return GetStoredContents(tmd, request); } IPCCommandResult ES::GetTitleCount(const std::vector& titles, const IOCtlVRequest& request)