From c45fa3c09e825523dcc4e3655a862db4f1f42629 Mon Sep 17 00:00:00 2001 From: yoshida_teruhisa Date: Fri, 4 Jul 2008 08:35:15 +0000 Subject: [PATCH] =?UTF-8?q?=E9=96=8B=E7=99=BA=E7=94=A8=E3=83=9C=E3=83=BC?= =?UTF-8?q?=E3=83=89=E3=81=A7=E3=82=82=E3=83=87=E3=83=90=E3=83=83=E3=82=AC?= =?UTF-8?q?=E3=82=92=E7=B9=8B=E3=81=84=E3=81=A7=E3=81=84=E3=81=AA=E3=81=84?= =?UTF-8?q?=E5=A0=B4=E5=90=88=E3=81=AF=E3=80=81DS=E3=82=AB=E3=83=BC?= =?UTF-8?q?=E3=83=89=E3=82=A2=E3=83=97=E3=83=AA=E8=B5=B7=E5=8B=95=E6=99=82?= =?UTF-8?q?=E3=81=AB=E3=83=9B=E3=83=AF=E3=82=A4=E3=83=88=E3=83=AA=E3=82=B9?= =?UTF-8?q?=E3=83=88=E9=96=A2=E4=BF=82=E3=81=AE=E3=83=81=E3=82=A7=E3=83=83?= =?UTF-8?q?=E3=82=AF=E3=82=92=E8=A1=8C=E3=81=86=E3=81=8C=E3=80=81=E3=81=9D?= =?UTF-8?q?=E3=81=AE=E7=B5=90=E6=9E=9C=E3=81=AB=E3=82=88=E3=81=A3=E3=81=A6?= =?UTF-8?q?=E3=82=A2=E3=83=97=E3=83=AA=E8=B5=B7=E5=8B=95=E3=82=92=E5=81=9C?= =?UTF-8?q?=E6=AD=A2=E3=81=97=E3=81=AA=E3=81=84=E3=82=88=E3=81=86=E3=81=AB?= =?UTF-8?q?=E5=A4=89=E6=9B=B4=EF=BC=88UIG=E3=81=AE=E8=A6=81=E6=9C=9B?= =?UTF-8?q?=E5=AF=BE=E5=BF=9C=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@1791 b08762b0-b915-fc4b-9d8c-17b2551a87ff --- .../sysmenu/ARM9/src/title.c | 67 +++++-------------- 1 file changed, 18 insertions(+), 49 deletions(-) diff --git a/build/libraries_sysmenu/sysmenu/ARM9/src/title.c b/build/libraries_sysmenu/sysmenu/ARM9/src/title.c index e4e31d92..cf3b6786 100644 --- a/build/libraries_sysmenu/sysmenu/ARM9/src/title.c +++ b/build/libraries_sysmenu/sysmenu/ARM9/src/title.c @@ -102,7 +102,6 @@ static MbAuthCode s_authcode; static BOOL s_loadstart = FALSE; static BOOL s_loadPaused = FALSE; -static BOOL s_loadForcibly = FALSE; static OSMessageQueue s_msgQ; static OSMessage s_msgArray[SYSM_TITLE_MESSAGE_ARRAY_MAX]; @@ -115,8 +114,8 @@ static BOOL s_result_phase1 = FALSE; static u8 dht_buffer[DS_HASH_TABLE_SIZE] ATTRIBUTE_ALIGN(256); static DHTFile *const dht = (DHTFile*)dht_buffer; -static const u8* hash0; -static const u8* hash1; +static const u8* hash0 = NULL; +static const u8* hash1 = NULL; // const data------------------------------------------------------------------ static const OSBootType s_launcherToOSBootType[ LAUNCHER_BOOTTYPE_MAX ] = { @@ -909,8 +908,6 @@ static BOOL SYSMi_AuthenticateHeaderWithSign( TitleProperty *pBootTitle, ROM_Hea ); } - s_b_dev = FALSE; - // アプリ種別とボンディングオプションによって使う鍵を分ける //#define LNC_PDTKEY_DBG #ifdef LNC_PDTKEY_DBG @@ -1228,20 +1225,18 @@ void SYSM_ResumeLoadingThread( BOOL force ) static BOOL SYSMi_AuthenticateNTRCardAppHeader( TitleProperty *pBootTitle, ROM_Header *head ) { BOOL ret = TRUE; - // デバッガに接続してるときは適用しない if( SYSM_IsRunOnDebugger() ) { return TRUE; } - + #define DEV_WHITELIST_CHECK_SKIP #ifdef DEV_WHITELIST_CHECK_SKIP - // 開発版では完全に飛ばすようにしたい + // 開発版ではハッシュチェックスルーフラグを立てる if( SCFG_GetBondingOption() != 0 ) { - s_loadForcibly = TRUE; - return TRUE; + s_b_dev = TRUE; } #endif @@ -1262,8 +1257,11 @@ static BOOL SYSMi_AuthenticateNTRCardAppHeader( TitleProperty *pBootTitle, ROM_H if(!dht) { OS_TPrintf(" Search DHT : database init Failed.\n"); - UTL_SetFatalError(FATAL_ERROR_WHITELIST_INITDB_FAILED); - ret = FALSE; + if(!s_b_dev) + { + UTL_SetFatalError(FATAL_ERROR_WHITELIST_INITDB_FAILED); + ret = FALSE; + } }else { OS_TPrintf("Searching DHT for %.4s(%02X)...", head->s.game_code, head->s.rom_version); @@ -1271,8 +1269,11 @@ static BOOL SYSMi_AuthenticateNTRCardAppHeader( TitleProperty *pBootTitle, ROM_H if ( !db ) { OS_TPrintf(" Search DHT : Failed.\n"); - UTL_SetFatalError(FATAL_ERROR_WHITELIST_NOTFOUND); - ret = FALSE; + if(!s_b_dev) + { + UTL_SetFatalError(FATAL_ERROR_WHITELIST_NOTFOUND); + ret = FALSE; + } }else { hash0 = db->hash[0]; @@ -1281,32 +1282,6 @@ static BOOL SYSMi_AuthenticateNTRCardAppHeader( TitleProperty *pBootTitle, ROM_H } } } - -#ifndef DEV_WHITELIST_CHECK_SKIP - // ボンディングオプションが0のときは以下の特殊処理をせずにリターン - if( SCFG_GetBondingOption() == 0 ) - { - return ret; - } - - // データロード前認証に失敗した場合にボタン押しで強制ロードするようにする - // 失敗時にメインスレッドにメッセージを送り、ボタン押し待ち - // 押されたらメインスレッドからこちらのスレッドにメッセージを送る - // メッセージ内容次第でロードを続行するか、エラーを返して中止するか選択 - // 続行する場合は強制実行フラグを立てる - if( ret != TRUE ) - { - BOOL forcing; - OS_InitMessageQueue(&s_msgQ, s_msgArray, SYSM_TITLE_MESSAGE_ARRAY_MAX); - s_loadPaused = TRUE; - OS_ReceiveMessage(&s_msgQ, (OSMessage*)&forcing, OS_MESSAGE_BLOCK); - if(forcing) - { - ret = TRUE; - s_loadForcibly = TRUE; - } - } -#endif return ret; } @@ -1317,19 +1292,13 @@ static BOOL SYSMi_AuthenticateNTRCardTitle( TitleProperty *pBootTitle) #pragma unused(pBootTitle) DHTPhase2Work* p2work; ROM_Header_Short *hs = ( ROM_Header_Short *)SYSM_APP_ROM_HEADER_BUF; - + // デバッガに接続してるときは適用しない if( SYSM_IsRunOnDebugger() ) { return TRUE; } - - // ロード前認証で強制実行フラグを立てていれば、飛ばす - if( s_loadForcibly ) - { - return TRUE; - } - + // phase1最終検証 if(s_calc_hash) { @@ -1357,7 +1326,7 @@ static BOOL SYSMi_AuthenticateNTRCardTitle( TitleProperty *pBootTitle) // DHTチェックphase2 OS_TPrintf("DHT Phase2..."); p2work = SYSM_Alloc( sizeof(DHTPhase2Work) ); - if ( !DHT_CheckHashPhase2(hash1, hs, p2work, WrapperFunc_ReadCardData, NULL) ) + if ( !hash1 || !DHT_CheckHashPhase2(hash1, hs, p2work, WrapperFunc_ReadCardData, NULL) ) { OS_TPrintf(" DHT Phase2 : Failed.\n"); SYSM_Free(p2work);