Commit 378515aa authored by John Stebbins's avatar John Stebbins

Sanitize PTT start offsets

If the start offset points past the last_byte (outside the region read) stop
reading PTTs and adjust nr_of_srpts.

Fixes Transformers 3.
parent 0de97440
......@@ -1184,7 +1184,15 @@ int ifoRead_VTS_PTT_SRPT(ifo_handle_t *ifofile) {
goto fail;
}
for(i = 0; i < vts_ptt_srpt->nr_of_srpts; i++) {
B2N_32(data[i]);
/* Transformers 3 has PTT start bytes that point outside the SRPT PTT */
uint32_t start = data[i];
B2N_32(start);
if(start + sizeof(ptt_info_t) > vts_ptt_srpt->last_byte + 1) {
/* don't mess with any bytes beyond the end of the allocation */
vts_ptt_srpt->nr_of_srpts = i;
break;
}
data[i] = start;
/* assert(data[i] + sizeof(ptt_info_t) <= vts_ptt_srpt->last_byte + 1);
Magic Knight Rayearth Daybreak is mastered very strange and has
Titles with 0 PTTs. They all have a data[i] offsets beyond the end of
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment