Personalized eTicketのリストを正しく渡せていなかったのを修正

git-svn-id: file:///Volumes/Transfer/gigaleak_20231201/2020-05-23%20-%20ctr.7z%20+%20svn_v1.068.zip/ctr/svn/ctr_Repair@846 385bec56-5757-e545-9c3a-d8741f4650f1
This commit is contained in:
N2614 2015-03-20 07:57:25 +00:00
parent 20462efe93
commit 8f470ca407
2 changed files with 27 additions and 15 deletions

View File

@ -23,6 +23,7 @@
#include <nn/cfg/CTR/cfg_ApiSys.h>
#include <nn/nwm.h>
#include <nn/am/am_ApiSystemMenu.h>
#include <nn/am/am_ApiNetworkImporter.h>
#include "Controller.h"
#include "FileChecker.h"
@ -886,7 +887,7 @@ nn::Result ExecSyncMcuRtc(common::HardwareStateManager& manager)
return result;
}
bool SetUpProgramIdListBasedOnPersonalizedTicket(nn::ProgramId* list, s32* personalizedTicketNum)
bool SetUpProgramIdListBasedOnPersonalizedTicket(nn::ProgramId** list, s32* personalizedTicketNum)
{
const size_t MAX_TICKET_NUM = 2000;
common::HeapManager ticketBuffer(sizeof(nn::am::TicketInfo) * MAX_TICKET_NUM);
@ -895,27 +896,28 @@ bool SetUpProgramIdListBasedOnPersonalizedTicket(nn::ProgramId* list, s32* perso
return false;
}
COMMON_LOGGER_RETURN_FALSE_IF_FAILED(
nn::am::InitializeForNetworkImporter());
nn::am::TicketInfo* ticketInfo = new (ticketBuffer.GetAddr()) nn::am::TicketInfo[MAX_TICKET_NUM];
COMMON_LOGGER_RETURN_FALSE_IF_NULL(ticketInfo);
nn::Result result = nn::am::GetPersonalizedTicketInfoList(personalizedTicketNum, ticketInfo, MAX_TICKET_NUM);
if(result.IsFailure())
{
COMMON_LOGGER_RESULT(result, __func__)
return false;
}
list = reinterpret_cast<nn::ProgramId*>(common::GetAllocator()->Allocate(
COMMON_LOGGER_RETURN_FALSE_IF_FAILED(
nn::am::GetPersonalizedTicketInfoList(personalizedTicketNum, ticketInfo, MAX_TICKET_NUM));
*list = reinterpret_cast<nn::ProgramId*>(common::GetAllocator()->Allocate(
sizeof(nn::ProgramId) * (*personalizedTicketNum), nn::fnd::ExpHeap::DEFAULT_ALIGNMENT));
if(!list)
{
return false;
}
COMMON_LOGGER_RETURN_FALSE_IF_NULL(*list);
for (s32 i = 0; i < *personalizedTicketNum; i++)
{
list[i] = ticketInfo[i].titleId;
*list[i] = ticketInfo[i].titleId;
}
COMMON_LOGGER_RETURN_FALSE_IF_FAILED(
nn::am::FinalizeForNetworkImporter());
return true;
}
@ -1552,7 +1554,7 @@ void ControlState(common::HardwareStateManager& manager, common::OperationMessag
case RESTORE_PREORDER_TITLE:
{
s32 personalizedTicketNum;
if(!SetUpProgramIdListBasedOnPersonalizedTicket(sp_ProgramId, &personalizedTicketNum))
if(!SetUpProgramIdListBasedOnPersonalizedTicket(&sp_ProgramId, &personalizedTicketNum))
{
s_RestoreState = FAIL;
break;
@ -1593,7 +1595,7 @@ void ControlState(common::HardwareStateManager& manager, common::OperationMessag
case PREINSTALL_RESTORE_PREORDER_TITLE:
{
s32 personalizedTicketNum;
if(!SetUpProgramIdListBasedOnPersonalizedTicket(sp_ProgramId, &personalizedTicketNum))
if(!SetUpProgramIdListBasedOnPersonalizedTicket(&sp_ProgramId, &personalizedTicketNum))
{
s_RestoreState = FAIL;
break;

View File

@ -86,6 +86,16 @@
} \
}while(0)
#define COMMON_LOGGER_RETURN_FALSE_IF_NULL(ptr) \
do \
{ \
if(!ptr) \
{ \
COMMON_LOGGER("ptr == NULL, %d, %s", __LINE__, __func__); \
return false; \
} \
}while(0)
#define COMMON_LOGGER_RETURN_VOID_IF_FAILED(result) \
do \
{ \