add IOS whitelist, reload if found. display warning if not.

This commit is contained in:
dborth 2010-12-18 16:05:06 +00:00
parent 016fb88d9c
commit dc5bff23d8
3 changed files with 30 additions and 5 deletions

View File

@ -4311,8 +4311,15 @@ MainMenu (int menu)
#ifdef HW_RVL #ifdef HW_RVL
static bool checkIOS = true; static bool checkIOS = true;
if(checkIOS && !SaneIOS()) if(checkIOS)
ErrorPrompt("The current IOS has been altered (fake-signed). Functionality and/or stability may be adversely affected."); {
u32 ios = IOS_GetVersion();
if(!SupportedIOS(ios))
ErrorPrompt("The current IOS is unsupported. Functionality and/or stability may be adversely affected.");
else if(!SaneIOS(ios))
ErrorPrompt("The current IOS has been altered (fake-signed). Functionality and/or stability may be adversely affected.");
}
checkIOS = false; checkIOS = false;
#endif #endif

View File

@ -175,12 +175,19 @@ static void ipl_set_config(unsigned char c)
* IOS Check * IOS Check
***************************************************************************/ ***************************************************************************/
#ifdef HW_RVL #ifdef HW_RVL
bool SaneIOS() bool SupportedIOS(u32 ios)
{
if(ios == 58 || ios == 61)
return true;
return false;
}
bool SaneIOS(u32 ios)
{ {
bool res = false; bool res = false;
u32 num_titles=0; u32 num_titles=0;
u32 tmd_size; u32 tmd_size;
u32 ios = IOS_GetVersion();
if(ios > 200) if(ios > 200)
return false; return false;
@ -296,6 +303,16 @@ void USBGeckoOutput()
****************************************************************************/ ****************************************************************************/
int main(int argc, char *argv[]) int main(int argc, char *argv[])
{ {
u32 ios = IOS_GetVersion();
if(!SupportedIOS(ios))
{
s32 preferred = IOS_GetPreferredVersion();
if(SupportedIOS(preferred))
IOS_ReloadIOS(preferred);
}
//USBGeckoOutput(); // uncomment to enable USB gecko output //USBGeckoOutput(); // uncomment to enable USB gecko output
__exception_setreload(8); __exception_setreload(8);

View File

@ -93,7 +93,8 @@ struct SGCSettings{
void ExitApp(); void ExitApp();
void ShutdownWii(); void ShutdownWii();
bool SaneIOS(); bool SupportedIOS(u32 ios);
bool SaneIOS(u32 ios);
extern struct SGCSettings GCSettings; extern struct SGCSettings GCSettings;
extern int ScreenshotRequested; extern int ScreenshotRequested;
extern int ConfigRequested; extern int ConfigRequested;