mirror of
https://github.com/rvtr/TwlIPL.git
synced 2025-10-31 06:01:12 -04:00
NTRカード起動時、タイトルプロパティのタイトルIDと、カードから読み込んだヘッダのゲームコードから作成できる擬似タイトルIDが食い違っていたらFATAL発生するよう変更
カード起動時、最後にstateのchangeを検出してから、タイトルロード開始までの一瞬の間にカード抜き差しが発生した場合、FATAL発生するよう変更 git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@2406 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
parent
b60f59a9f7
commit
787f9472f9
@ -857,4 +857,6 @@ static char *s_strError[ FATAL_ERROR_MAX ] = {
|
||||
"FATAL_ERROR_LOAD_UNKNOWN_BOOTTYPE",
|
||||
"FATAL_ERROR_LOAD_AUTH_HEADER_FAILED",
|
||||
"FATAL_ERROR_LOAD_NEVER_STARTED",
|
||||
"FATAL_ERROR_EJECT_CARD_AFTER_LOAD_START",
|
||||
"FATAL_ERROR_TITLEID_COMPARE_FAILED_NTR",
|
||||
};
|
||||
@ -984,6 +984,14 @@ void SYSM_StartLoadTitle( TitleProperty *pBootTitle )
|
||||
OS_TPrintf("SYSM_StartLoadTitle failed: This App has Data_Only flag.\n");
|
||||
return;
|
||||
}
|
||||
|
||||
// 最後、カード抜き挿しが発生してからSYSM_GetCardTitleListが呼ばれていない状態
|
||||
// (画面表示やリストに変更が通知されていない)だったらFATAL
|
||||
// ただし、カード起動のときのみ
|
||||
if( SYSMi_GetWork()->flags.hotsw.isCardStateChanged && pBootTitle->flags.bootType == LAUNCHER_BOOTTYPE_ROM )
|
||||
{
|
||||
UTL_SetFatalError(FATAL_ERROR_EJECT_CARD_AFTER_LOAD_START);
|
||||
}
|
||||
|
||||
s_loadstart = TRUE;
|
||||
s_loadTimes++; // ロード回数のチェック用、二回目以降は非対応の実装なので
|
||||
@ -1382,6 +1390,7 @@ void SYSM_ResumeLoadingThread( BOOL force )
|
||||
static BOOL SYSMi_AuthenticateNTRCardAppHeader( TitleProperty *pBootTitle, ROM_Header *head )
|
||||
{
|
||||
BOOL ret = TRUE;
|
||||
OSTitleId ntr_fake_titleID;
|
||||
|
||||
#ifdef DEV_WHITELIST_CHECK_SKIP
|
||||
// 開発版ではハッシュチェックスルーフラグを立てる
|
||||
@ -1390,6 +1399,24 @@ static BOOL SYSMi_AuthenticateNTRCardAppHeader( TitleProperty *pBootTitle, ROM_H
|
||||
s_b_dev = TRUE;
|
||||
}
|
||||
#endif
|
||||
|
||||
// pBootTitle->titleIDとROMヘッダのゲームコードの一致確認をする。
|
||||
ntr_fake_titleID = (u64)( ( head->s.game_code[ 3 ] << 0 ) |
|
||||
( head->s.game_code[ 2 ] << 8 ) |
|
||||
( head->s.game_code[ 1 ] << 16 ) |
|
||||
( head->s.game_code[ 0 ] << 24 ) );
|
||||
if( pBootTitle->titleID != ntr_fake_titleID )
|
||||
{
|
||||
// ヘッダから作成した擬似titleIDが起動指定されたタイトルに格納されている擬似IDと違う
|
||||
OS_TPrintf( "SYSMi_AuthenticateNTRCardAppHeader failed: header TitleID error\n" );
|
||||
OS_TPrintf( "SYSMi_AuthenticateNTRCardAppHeader failed: selectedTitleID=%.16llx\n", pBootTitle->titleID );
|
||||
OS_TPrintf( "SYSMi_AuthenticateNTRCardAppHeader failed: headerTitleID=%.16llx\n", ntr_fake_titleID );
|
||||
UTL_SetFatalError(FATAL_ERROR_TITLEID_COMPARE_FAILED_NTR);
|
||||
return FALSE;
|
||||
}else
|
||||
{
|
||||
OS_TPrintf( "Authenticate_Header : header TitleID check succeed.\n" );
|
||||
}
|
||||
|
||||
if( head->s.exFlags.enable_nitro_whitelist_signature )
|
||||
{
|
||||
|
||||
@ -121,7 +121,9 @@ static const char *fatal_error_msg[FATAL_ERROR_MAX] =
|
||||
"DHT_PHASE1_CALC_FAILED",
|
||||
"LOAD_UNKNOWN_BOOTTYPE",
|
||||
"LOAD_AUTH_HEADER_FAILED",
|
||||
"LOAD_NEVER_STARTED"
|
||||
"LOAD_NEVER_STARTED",
|
||||
"EJECT_CARD_AFTER_LOAD_START",
|
||||
"TITLEID_COMPARE_FAILED_NTR"
|
||||
};
|
||||
|
||||
//#define DEBUG_LAUNCHER_DUMP
|
||||
|
||||
@ -23,7 +23,7 @@
|
||||
|
||||
#define BUFSIZE 256
|
||||
|
||||
#define FATAL_ERROR_MAX 49
|
||||
#define FATAL_ERROR_MAX 51
|
||||
#define NUM_ENTRY_PER_PAGE 5
|
||||
#define NUM_LINE_PER_ENTRY 4
|
||||
#define SKIP_SPAN 5
|
||||
@ -637,5 +637,7 @@ static char *s_strError[ FATAL_ERROR_MAX ] = {
|
||||
"DHT_PHASE1_CALC_FAILED",
|
||||
"LOAD_UNKNOWN_BOOTTYPE",
|
||||
"LOAD_AUTH_HEADER_FAILED",
|
||||
"LOAD_NEVER_STARTED"
|
||||
"LOAD_NEVER_STARTED",
|
||||
"EJECT_CARD_AFTER_LOAD_START",
|
||||
"TITLEID_COMPARE_FAILED_NTR"
|
||||
};
|
||||
|
||||
@ -78,8 +78,10 @@ typedef enum FatalErrorCode {
|
||||
FATAL_ERROR_LOAD_UNKNOWN_BOOTTYPE = 46,
|
||||
FATAL_ERROR_LOAD_AUTH_HEADER_FAILED = 47,
|
||||
FATAL_ERROR_LOAD_NEVER_STARTED = 48,
|
||||
FATAL_ERROR_EJECT_CARD_AFTER_LOAD_START = 49,
|
||||
FATAL_ERROR_TITLEID_COMPARE_FAILED_NTR = 50,
|
||||
|
||||
FATAL_ERROR_MAX = 49
|
||||
FATAL_ERROR_MAX = 51
|
||||
}FatalErrorCode;
|
||||
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user