From 309deefe9d2e91099aba1f56c8567e88a6832738 Mon Sep 17 00:00:00 2001 From: Maschell Date: Sat, 23 Jul 2022 19:59:08 +0200 Subject: [PATCH] nn::acp: Enforce ACPGetTitleMetaXml parameter alignment requirement. --- cafe/nn_acp.def | 4 +++- include/nn/acp/title.h | 25 ++++++++++++++++++++++++- 2 files changed, 27 insertions(+), 2 deletions(-) diff --git a/cafe/nn_acp.def b/cafe/nn_acp.def index b7a26a3c..104484d6 100644 --- a/cafe/nn_acp.def +++ b/cafe/nn_acp.def @@ -71,7 +71,6 @@ ACPGetTitleInfoOfMainApplication ACPGetTitleMetaDir ACPGetTitleMetaDirByDevice ACPGetTitleMetaDirByTitleListType -ACPGetTitleMetaXml ACPGetTitleMetaXmlByDevice ACPGetTitleMetaXmlByPath ACPGetTitleMetaXmlByTitleListType @@ -159,3 +158,6 @@ TurnOffDrcLed__Q2_2nn3acpFv TurnOnDrcLedTest__Q2_2nn3acpFUcUiQ3_2nn3acp13DrcLedPattern TurnOnDrcLed__Q2_2nn3acpFUiQ3_2nn3acp13DrcLedPattern WaitExternalStorage__Q2_2nn3acpFv + +:TEXT_WRAP +ACPGetTitleMetaXml diff --git a/include/nn/acp/title.h b/include/nn/acp/title.h index 5c4aedce..bd1ab1dd 100644 --- a/include/nn/acp/title.h +++ b/include/nn/acp/title.h @@ -1,4 +1,5 @@ #pragma once + #include #include #include @@ -242,9 +243,31 @@ ACPAssignTitlePatch(MCPTitleListType* titleInfo); ACPResult ACPGetTitleIdOfMainApplication(ACPTitleId* titleId); +/** + * Gets the MetaXML for a given title id + * @param titleId + * @param metaXml must be aligned to 0x40 + * @return ACP_RESULT_SUCCESS on success + */ ACPResult +RPLWRAP(ACPGetTitleMetaXml)(ACPTitleId titleId, + ACPMetaXml *metaXml); + +/** + * Gets the MetaXML for a given title id + * @param titleId + * @param metaXml must be aligned to 0x40 + * @return ACP_RESULT_SUCCESS on success, + * ACP_RESULT_INVALID_PARAMETER if metaXml is not aligned properly + */ +static inline ACPResult ACPGetTitleMetaXml(ACPTitleId titleId, - ACPMetaXml* metaXml); + ACPMetaXml *metaXml) { + if ((uintptr_t) metaXml & 0x3F) { + return ACP_RESULT_INVALID_PARAMETER; + } + return RPLWRAP(ACPGetTitleMetaXml)(titleId, metaXml); +} ACPResult ACPGetTitleMetaDirByDevice(ACPTitleId titleId,