Skip to content

Commit a6e19c1

Browse files
psf: Avoid crash when opening malformed PSF2 file. Closes: #1716
1 parent c25b96f commit a6e19c1

1 file changed

Lines changed: 5 additions & 1 deletion

File tree

src/psf/eng_psf2.cc

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -286,6 +286,10 @@ static uint32_t load_file_ex(uint8_t *top, uint8_t *start, uint32_t len, const c
286286

287287
for (i = 0; i < numfiles; i++)
288288
{
289+
// Ensure the entire 48-byte entry is within this block
290+
if ((cptr < start) || (cptr + 48 > start + len))
291+
return 0xffffffff;
292+
289293
offs = cptr[36] | cptr[37]<<8 | cptr[38]<<16 | cptr[39]<<24;
290294
uncomp = cptr[40] | cptr[41]<<8 | cptr[42]<<16 | cptr[43]<<24;
291295
bsize = cptr[44] | cptr[45]<<8 | cptr[46]<<16 | cptr[47]<<24;
@@ -511,7 +515,7 @@ int32_t psf2_start(uint8_t *buffer, uint32_t length)
511515
}
512516
free(buf);
513517

514-
if (initialPC == 0xffffffff)
518+
if (irx_len == 0xffffffff || initialPC == 0xffffffff)
515519
{
516520
return AO_FAIL;
517521
}

0 commit comments

Comments
 (0)