From 8f470ca407700c1f61f22760b0d5bd5b45dad6b9 Mon Sep 17 00:00:00 2001 From: N2614 Date: Fri, 20 Mar 2015 07:57:25 +0000 Subject: [PATCH] =?UTF-8?q?Personalized=20eTicket=E3=81=AE=E3=83=AA?= =?UTF-8?q?=E3=82=B9=E3=83=88=E3=82=92=E6=AD=A3=E3=81=97=E3=81=8F=E6=B8=A1?= =?UTF-8?q?=E3=81=9B=E3=81=A6=E3=81=84=E3=81=AA=E3=81=8B=E3=81=A3=E3=81=9F?= =?UTF-8?q?=E3=81=AE=E3=82=92=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 --- .../sources/ConsoleRestore/Controller.cpp | 32 ++++++++++--------- .../sources/common/CommonLogger.h | 10 ++++++ 2 files changed, 27 insertions(+), 15 deletions(-) diff --git a/trunk/ConsoleDataMigration/sources/ConsoleRestore/Controller.cpp b/trunk/ConsoleDataMigration/sources/ConsoleRestore/Controller.cpp index 81ce40b..4dfa455 100644 --- a/trunk/ConsoleDataMigration/sources/ConsoleRestore/Controller.cpp +++ b/trunk/ConsoleDataMigration/sources/ConsoleRestore/Controller.cpp @@ -23,6 +23,7 @@ #include #include #include +#include #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(common::GetAllocator()->Allocate( + COMMON_LOGGER_RETURN_FALSE_IF_FAILED( + nn::am::GetPersonalizedTicketInfoList(personalizedTicketNum, ticketInfo, MAX_TICKET_NUM)); + + *list = reinterpret_cast(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; diff --git a/trunk/ConsoleDataMigration/sources/common/CommonLogger.h b/trunk/ConsoleDataMigration/sources/common/CommonLogger.h index 99c26ca..f2933a3 100644 --- a/trunk/ConsoleDataMigration/sources/common/CommonLogger.h +++ b/trunk/ConsoleDataMigration/sources/common/CommonLogger.h @@ -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 \ { \