Skip to content

Commit 0ea426a

Browse files
committed
Pad malformed roms before loading
1 parent 723e714 commit 0ea426a

1 file changed

Lines changed: 9 additions & 4 deletions

File tree

src/media.cpp

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -232,15 +232,20 @@ bool Media::LoadHuCardFromBuffer(const u8* buffer, int size, const char* path)
232232
buffer += 512;
233233
}
234234

235-
assert((size % 0x2000) == 0);
236-
if ((size % 0x2000) != 0)
235+
if (size <= 0)
237236
{
238237
Error("Invalid size found: %d (0x%X) bytes", size, size);
238+
return false;
239239
}
240240

241-
m_rom_size = size;
241+
m_rom_size = (size + 0x1FFF) & ~0x1FFF;
242+
243+
if (m_rom_size != size)
244+
Log("WARNING: HuCard size %d (0x%X) is not 8KB aligned. Padding to %d (0x%X) bytes", size, size, m_rom_size, m_rom_size);
245+
242246
m_rom = new u8[m_rom_size];
243-
memcpy(m_rom, buffer, m_rom_size);
247+
memset(m_rom, 0xFF, m_rom_size);
248+
memcpy(m_rom, buffer, size);
244249
m_ready = true;
245250

246251
Debug("HuCard loaded from buffer. Size: %d bytes", m_rom_size);

0 commit comments

Comments
 (0)