From 98dea421ba79b583b201e8b17b46a72170ba18ea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9o=20Lam?= Date: Thu, 6 Apr 2017 10:38:06 +0200 Subject: [PATCH] IOS/ES: Block ES_DIVerify from the IPC interface Simple accuracy change. DIVerify is an internal ioctlv in unpatched, up-to-date IOSes, where calling it from the PPC just returns -1017. --- Source/Core/Core/IOS/ES/ES.cpp | 10 +++++++++- Source/Core/Core/IOS/ES/ES.h | 1 + 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/Source/Core/Core/IOS/ES/ES.cpp b/Source/Core/Core/IOS/ES/ES.cpp index eaad202a9c..75440ff141 100644 --- a/Source/Core/Core/IOS/ES/ES.cpp +++ b/Source/Core/Core/IOS/ES/ES.cpp @@ -335,6 +335,8 @@ IPCCommandResult ES::IOCtlV(const IOCtlVRequest& request) return GetTitleID(request); case IOCTL_ES_SETUID: return SetUID(request); + case IOCTL_ES_DIVERIFY: + return DIVerify(request); case IOCTL_ES_GETOWNEDTITLECNT: return GetOwnedTitleCount(request); @@ -489,7 +491,13 @@ const DiscIO::CNANDContentLoader& ES::AccessContentDevice(u64 title_id) } // This is technically an ioctlv in IOS's ES, but it is an internal API which cannot be -// used from the PowerPC (for unpatched IOSes anyway). +// used from the PowerPC (for unpatched and up-to-date IOSes anyway). +// So we block access to it from the IPC interface. +IPCCommandResult ES::DIVerify(const IOCtlVRequest& request) +{ + return GetDefaultReply(ES_EINVAL); +} + s32 ES::DIVerify(const IOS::ES::TMDReader& tmd, const IOS::ES::TicketReader& ticket) { s_title_context.Clear(); diff --git a/Source/Core/Core/IOS/ES/ES.h b/Source/Core/Core/IOS/ES/ES.h index 7b424ec654..941299f309 100644 --- a/Source/Core/Core/IOS/ES/ES.h +++ b/Source/Core/Core/IOS/ES/ES.h @@ -177,6 +177,7 @@ private: IPCCommandResult GetConsumption(const IOCtlVRequest& request); IPCCommandResult Launch(const IOCtlVRequest& request); IPCCommandResult LaunchBC(const IOCtlVRequest& request); + IPCCommandResult DIVerify(const IOCtlVRequest& request); // Title contents IPCCommandResult OpenTitleContent(const IOCtlVRequest& request);