デバッガに接続しているときもDSカードのハッシュチェックを一通り行い、結果だけ無視するように変更

ハッシュチェック結果無視時、メモリの解放を二重に行って落ちていたバグの修正

git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@1794 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
yoshida_teruhisa 2008-07-07 04:21:22 +00:00
parent 7281abe20c
commit e76216fdb7

View File

@ -1225,11 +1225,6 @@ void SYSM_ResumeLoadingThread( BOOL force )
static BOOL SYSMi_AuthenticateNTRCardAppHeader( TitleProperty *pBootTitle, ROM_Header *head ) static BOOL SYSMi_AuthenticateNTRCardAppHeader( TitleProperty *pBootTitle, ROM_Header *head )
{ {
BOOL ret = TRUE; BOOL ret = TRUE;
// デバッガに接続してるときは適用しない
if( SYSM_IsRunOnDebugger() )
{
return TRUE;
}
#define DEV_WHITELIST_CHECK_SKIP #define DEV_WHITELIST_CHECK_SKIP
#ifdef DEV_WHITELIST_CHECK_SKIP #ifdef DEV_WHITELIST_CHECK_SKIP
@ -1292,18 +1287,12 @@ static BOOL SYSMi_AuthenticateNTRCardTitle( TitleProperty *pBootTitle)
#pragma unused(pBootTitle) #pragma unused(pBootTitle)
DHTPhase2Work* p2work; DHTPhase2Work* p2work;
ROM_Header_Short *hs = ( ROM_Header_Short *)SYSM_APP_ROM_HEADER_BUF; ROM_Header_Short *hs = ( ROM_Header_Short *)SYSM_APP_ROM_HEADER_BUF;
// デバッガに接続してるときは適用しない
if( SYSM_IsRunOnDebugger() )
{
return TRUE;
}
// phase1最終検証 // phase1最終検証
if(s_calc_hash) if(s_calc_hash)
{ {
// アプリをロードする時に計算したハッシュを検証 // アプリをロードする時に計算したハッシュを検証
if(!SVC_CompareSHA1((const void *)hash0, (const void *)&s_calc_hash[1 * SVC_SHA1_DIGEST_SIZE])) if( !hash0 || !SVC_CompareSHA1( (const void *)hash0, (const void *)&s_calc_hash[1 * SVC_SHA1_DIGEST_SIZE] ) )
{ {
OS_TPrintf("DHT Phase1 failed: hash check failed.\n"); OS_TPrintf("DHT Phase1 failed: hash check failed.\n");
if(!s_b_dev) { if(!s_b_dev) {
@ -1322,15 +1311,15 @@ static BOOL SYSMi_AuthenticateNTRCardTitle( TitleProperty *pBootTitle)
return FALSE; return FALSE;
} }
} }
// DHTチェックphase2 // DHTチェックphase2
OS_TPrintf("DHT Phase2..."); OS_TPrintf("DHT Phase2...");
p2work = SYSM_Alloc( sizeof(DHTPhase2Work) ); p2work = SYSM_Alloc( sizeof(DHTPhase2Work) );
if ( !hash1 || !DHT_CheckHashPhase2(hash1, hs, p2work, WrapperFunc_ReadCardData, NULL) ) if ( !hash1 || !DHT_CheckHashPhase2(hash1, hs, p2work, WrapperFunc_ReadCardData, NULL) )
{ {
OS_TPrintf(" DHT Phase2 : Failed.\n"); OS_TPrintf(" DHT Phase2 : Failed.\n");
SYSM_Free(p2work);
if(!s_b_dev){ if(!s_b_dev){
SYSM_Free(p2work);
UTL_SetFatalError(FATAL_ERROR_DHT_PHASE2_FAILED); UTL_SetFatalError(FATAL_ERROR_DHT_PHASE2_FAILED);
return FALSE; return FALSE;
} }