rcdino4: fix OOB access

This commit is contained in:
peterferrie 2014-10-27 23:33:41 -07:00
parent 7b7f2456b9
commit ea2070c139

View File

@ -6352,8 +6352,9 @@ DRIVER_INIT_MEMBER(funworld_state, rcdino4)
} }
j = 1; j = 1;
i = 0x81;
for (i = 0x81; i < (0x81 + ARRAY_LENGTH(rcdino4_keys80));) do
{ {
UINT8 key; UINT8 key;
@ -6418,9 +6419,14 @@ DRIVER_INIT_MEMBER(funworld_state, rcdino4)
while (j < 0x100); while (j < 0x100);
j &= 0xff; j &= 0xff;
do {
assert((i+1 - 0x81) >= 0 && (i+1 - 0x81) < ARRAY_LENGTH(rcdino4_keys80)); do {} while (((++i - 0x81) < ARRAY_LENGTH(rcdino4_keys80))
} while (!rcdino4_keys80[++i - 0x81]); && !rcdino4_keys80[i - 0x81]);
if ((i - 0x81) == ARRAY_LENGTH(rcdino4_keys80))
{
break;
}
if ((i == 0xa4) if ((i == 0xa4)
|| (i == 0xb0) || (i == 0xb0)
@ -6430,6 +6436,7 @@ DRIVER_INIT_MEMBER(funworld_state, rcdino4)
j = 0; /* re-align offset after skipping some pages */ j = 0; /* re-align offset after skipping some pages */
} }
} }
while (1);
} }
DRIVER_INIT_MEMBER(funworld_state, rcdinch) DRIVER_INIT_MEMBER(funworld_state, rcdinch)