Fix mupen64plus breakage after security updates

This commit is contained in:
CasualPokePlayer 2024-05-31 17:28:23 -07:00
parent f16e2107bf
commit d2fe532f6d
4 changed files with 56 additions and 46 deletions

Binary file not shown.

View File

@ -143,7 +143,18 @@ m64p_error open_rom(const unsigned char* romimage, unsigned int size)
g_MemHasBeenBSwapped = 0;
/* allocate new buffer for ROM and copy into this buffer */
rom_size = size;
rom = (unsigned char *) malloc(size);
/* round rom size to the next power of 2 */
while (rom_size & (rom_size - 1))
{
rom_size |= rom_size >> 1;
rom_size++;
}
if (rom_size == 0)
return M64ERR_INPUT_INVALID;
rom = (unsigned char *) calloc(rom_size, sizeof(unsigned char));
if (rom == NULL)
return M64ERR_NO_MEMORY;
memcpy(rom, romimage, size);

View File

@ -205,7 +205,7 @@ void dma_pi_write(void)
unsigned long rdram_address2 = pi_register.pi_dram_addr_reg+i+0xa0000000;
((unsigned char*)rdram)[MASK_ADDR_U8((pi_register.pi_dram_addr_reg+i)^S8, rdram)]=
rom[MASK_ADDR_U8((((pi_register.pi_cart_addr_reg-0x10000000)&0x3FFFFFF)+i)^S8, rom)];
rom[((((pi_register.pi_cart_addr_reg-0x10000000)&0x3FFFFFF)+i)^S8) & (rom_size - 1)];
if (!invalid_code[rdram_address1>>12])
{

View File

@ -3745,10 +3745,9 @@ unsigned int *fast_mem_access(unsigned int address)
unsigned int ofs = ((address & 0x1FFFFFFF) - 0x10000000)/4;
if (ofs < rom_size/4)
return (unsigned int *)rom + ofs;
else {
else
return NULL;
}
}
else if ((address & 0x1FFFFFFF) < 0x800000)
return (unsigned int *)rdram + (address & 0x1FFFFFFF)/4;
else if (address >= 0xa4000000 && address <= 0xa4001000)