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.
This commit is contained in:
Léo Lam 2017-04-06 10:38:06 +02:00
parent 36ab5eafcf
commit 98dea421ba
2 changed files with 10 additions and 1 deletions

View File

@ -335,6 +335,8 @@ IPCCommandResult ES::IOCtlV(const IOCtlVRequest& request)
return GetTitleID(request); return GetTitleID(request);
case IOCTL_ES_SETUID: case IOCTL_ES_SETUID:
return SetUID(request); return SetUID(request);
case IOCTL_ES_DIVERIFY:
return DIVerify(request);
case IOCTL_ES_GETOWNEDTITLECNT: case IOCTL_ES_GETOWNEDTITLECNT:
return GetOwnedTitleCount(request); 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 // 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) s32 ES::DIVerify(const IOS::ES::TMDReader& tmd, const IOS::ES::TicketReader& ticket)
{ {
s_title_context.Clear(); s_title_context.Clear();

View File

@ -177,6 +177,7 @@ private:
IPCCommandResult GetConsumption(const IOCtlVRequest& request); IPCCommandResult GetConsumption(const IOCtlVRequest& request);
IPCCommandResult Launch(const IOCtlVRequest& request); IPCCommandResult Launch(const IOCtlVRequest& request);
IPCCommandResult LaunchBC(const IOCtlVRequest& request); IPCCommandResult LaunchBC(const IOCtlVRequest& request);
IPCCommandResult DIVerify(const IOCtlVRequest& request);
// Title contents // Title contents
IPCCommandResult OpenTitleContent(const IOCtlVRequest& request); IPCCommandResult OpenTitleContent(const IOCtlVRequest& request);