diff --git a/build/libraries_sysmenu/dht/common/src/dht.c b/build/libraries_sysmenu/dht/common/src/dht.c index 4d2e3848..97aff406 100644 --- a/build/libraries_sysmenu/dht/common/src/dht.c +++ b/build/libraries_sysmenu/dht/common/src/dht.c @@ -114,7 +114,7 @@ u32 DHT_GetDatabaseLength(const DHTFile* pDHT) } return sizeof(DHTHeader) + pDHT->header.nums * sizeof(DHTDatabase); } -BOOL DHT_CheckDatabase(const DHTFile* pDHT) +static BOOL DHT_CheckDatabase(const DHTFile* pDHT) { SVCSignHeapContext pool; u8 heap[4*1024]; @@ -143,7 +143,6 @@ BOOL DHT_PrepareDatabase(DHTFile* pDHT, FSFile* fp) { s32 result; s32 length; - u8 title[4] = { 'H','N','G','A' }; PROFILE_INIT(); if ( fp ) @@ -407,6 +406,11 @@ BOOL DHT_CheckHashPhase2(const u8* hash, const ROM_Header_Short* pROMHeader, DHT { length = max_sectors; } + if ( length < 0 || offset < sizeof(ROM_Header) ) + { + OS_TPrintf("Broaken FAT for %d of overlay.\n", i); + return FALSE; + } if ( !ImageHMACSHA1Update(&ctx, offset, length * 512) ) { OS_TPrintf("Cannot calc HMAC-SHA1 for %d of overlay.\n", i); diff --git a/include/sysmenu/dht/dht.h b/include/sysmenu/dht/dht.h index 1cb2457b..7fec7896 100644 --- a/include/sysmenu/dht/dht.h +++ b/include/sysmenu/dht/dht.h @@ -48,17 +48,6 @@ typedef BOOL (*DHTReadFunc)(void* dest, s32 offset, s32 length, void* arg); *---------------------------------------------------------------------------*/ u32 DHT_GetDatabaseLength(const DHTFile* pDHT); -/*---------------------------------------------------------------------------* - Name: DHT_PrepareDatabase - - Description: 読み込み済みの全データベースの署名を検証する - - Arguments: pDHT データベースの格納先 - - Returns: 成功すればTRUE - *---------------------------------------------------------------------------*/ -BOOL DHT_CheckDatabase(const DHTFile* pDHT); - /*---------------------------------------------------------------------------* Name: DHT_PrepareDatabase