アプリブート時のエントリアドレスのチェックを有効にする。

git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@2194 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
yosiokat 2008-08-20 01:13:57 +00:00
parent 869939185b
commit 1af31db9f8
2 changed files with 7 additions and 3 deletions

View File

@ -1518,13 +1518,11 @@ static void SYSMi_AuthenticateTitleThreadFunc( TitleProperty *pBootTitle )
UTL_SetFatalError(FATAL_ERROR_TITLE_POINTER_ERROR); UTL_SetFatalError(FATAL_ERROR_TITLE_POINTER_ERROR);
return; return;
} }
#if 0
// エントリアドレスの正当性をチェック // エントリアドレスの正当性をチェック
if( !SYSMi_CheckEntryAddress() ) { if( !SYSMi_CheckEntryAddress() ) {
UTL_SetFatalError(FATAL_ERROR_ENTRY_ADDRESS_ERROR); UTL_SetFatalError(FATAL_ERROR_ENTRY_ADDRESS_ERROR);
return; return;
} }
#endif
// BOOTTYPE_MEMORYでNTRモードのFSありでブートすると、旧NitroSDKでビルドされたアプリの場合、 // BOOTTYPE_MEMORYでNTRモードのFSありでブートすると、旧NitroSDKでビルドされたアプリの場合、
// ROMアーカイブにカードが割り当てられて、FSで関係ないカードにアクセスにいってしまうので、それを防止する。 // ROMアーカイブにカードが割り当てられて、FSで関係ないカードにアクセスにいってしまうので、それを防止する。

View File

@ -115,7 +115,7 @@ BOOL SYSM_IsNTRCard( void )
// エントリアドレスの正当性チェック // エントリアドレスの正当性チェック
BOOL SYSMi_CheckEntryAddress( void ) BOOL SYSMi_CheckEntryAddress( void )
{ {
// エントリアドレスがROM内登録エリアかAGBカートリッジエリアなら、無限ループに入る // エントリアドレスがMMEMもしくはWRAMのロード可能領域外なら、不正と判定
if( !( ( (u32)SYSM_GetCardRomHeader()->main_entry_address >= HW_MAIN_MEM ) && if( !( ( (u32)SYSM_GetCardRomHeader()->main_entry_address >= HW_MAIN_MEM ) &&
( (u32)SYSM_GetCardRomHeader()->main_entry_address < HW_TWL_MAIN_MEM_SHARED ) ( (u32)SYSM_GetCardRomHeader()->main_entry_address < HW_TWL_MAIN_MEM_SHARED )
) || ) ||
@ -123,6 +123,12 @@ BOOL SYSMi_CheckEntryAddress( void )
( (u32)SYSM_GetCardRomHeader()->sub_entry_address < HW_TWL_MAIN_MEM_SHARED ) ) || ( (u32)SYSM_GetCardRomHeader()->sub_entry_address < HW_TWL_MAIN_MEM_SHARED ) ) ||
( ( (u32)SYSM_GetCardRomHeader()->sub_entry_address >= HW_WRAM_BASE ) && ( ( (u32)SYSM_GetCardRomHeader()->sub_entry_address >= HW_WRAM_BASE ) &&
( (u32)SYSM_GetCardRomHeader()->sub_entry_address < SYSM_NTR_ARM7_LOAD_WRAM_END ) ) ( (u32)SYSM_GetCardRomHeader()->sub_entry_address < SYSM_NTR_ARM7_LOAD_WRAM_END ) )
) ||
!( ( (u32)SYSM_GetCardRomHeader()->main_entry_address >= (u32)SYSM_GetCardRomHeader()->main_ram_address ) &&
( (u32)SYSM_GetCardRomHeader()->main_entry_address < (u32)SYSM_GetCardRomHeader()->main_ram_address + SYSM_GetCardRomHeader()->main_size )
) ||
!( ( (u32)SYSM_GetCardRomHeader()->sub_entry_address >= (u32)SYSM_GetCardRomHeader()->sub_ram_address ) &&
( (u32)SYSM_GetCardRomHeader()->sub_entry_address < (u32)SYSM_GetCardRomHeader()->sub_ram_address + SYSM_GetCardRomHeader()->sub_size )
) )
) { ) {
OS_TPrintf("entry address invalid.\n"); OS_TPrintf("entry address invalid.\n");