FIRM from FCRAM: check for secondary magic

This commit is contained in:
d0k3 2017-09-19 01:00:44 +02:00
parent 4df98de543
commit 628234a861

View File

@ -1593,12 +1593,13 @@ u32 GodMode(bool is_b9s) {
bool godmode9 = !bootloader && !bootmenu; bool godmode9 = !bootloader && !bootmenu;
FirmHeader* firm_in_mem = (FirmHeader*) DIR_BUFFER; FirmHeader* firm_in_mem = (FirmHeader*) DIR_BUFFER;
if (bootloader || bootmenu) { if (bootloader || bootmenu) {
bool found = false;
for (u8* addr = (u8*) 0x20000200; addr < (u8*) 0x24000000; addr += 0x400000) { for (u8* addr = (u8*) 0x20000200; addr < (u8*) 0x24000000; addr += 0x400000) {
if (ValidateFirmHeader((FirmHeader*) (void*) addr, 0x100000) == 0) { if (memcmp(addr - 0x200, "A9NC", 4) != 0) continue;
memmove(firm_in_mem, addr, 0x100000); if (ValidateFirmHeader((FirmHeader*) (void*) addr, 0x100000) != 0) continue;
if (memcmp(addr, "FIRM", 4) == 0) memcpy(addr, "NOPE", 4); // prevent bootloops if (!found) memmove(firm_in_mem, addr, 0x100000);
break; if (memcmp(addr, "FIRM", 4) == 0) memcpy(addr, "NOPE", 4); // prevent bootloops
} found = true;
} }
} }