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

View File

@ -86,6 +86,16 @@
} \ } \
}while(0) }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) \ #define COMMON_LOGGER_RETURN_VOID_IF_FAILED(result) \
do \ do \
{ \ { \