Skip to content

Commit 8d0b03a

Browse files
authored
Merge pull request #75 from AliceLR/cleanup-66-2
Fix more issues from the fuzz-patch-1/oob_read_fixes merge.
2 parents f00a287 + 71efd96 commit 8d0b03a

File tree

2 files changed

+4
-5
lines changed

2 files changed

+4
-5
lines changed

src/load_mdl.cpp

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -303,15 +303,14 @@ BOOL CSoundFile::ReadMDL(const BYTE *lpStream, DWORD dwMemLength)
303303
if ((Headers[nins] = new INSTRUMENTHEADER) == NULL) break;
304304
INSTRUMENTHEADER *penv = Headers[nins];
305305
memset(penv, 0, sizeof(INSTRUMENTHEADER));
306-
if (dwPos < dwMemLength - 34)
307-
memcpy(penv->name, lpStream+dwPos+2, 32);
306+
if (dwPos > dwMemLength - 34) break;
307+
memcpy(penv->name, lpStream+dwPos+2, 32);
308308
penv->nGlobalVol = 64;
309309
penv->nPPC = 5*12;
310310
if (34 + 14u*lpStream[dwPos+1] > dwMemLength - dwPos) break;
311311
for (j=0; j<lpStream[dwPos+1]; j++)
312312
{
313313
const BYTE *ps = lpStream+dwPos+34+14*j;
314-
if (dwPos+34+14*j >= dwMemLength - 12) break;
315314
while ((note < (UINT)(ps[1]+12)) && (note < NOTE_MAX))
316315
{
317316
penv->NoteMap[note] = note+1;

src/load_mt2.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -288,7 +288,7 @@ BOOL CSoundFile::ReadMT2(LPCBYTE lpStream, DWORD dwMemLength)
288288
const MT2PATTERN *pmp = (MT2PATTERN *)(lpStream+dwMemPos);
289289
UINT wDataLen = (pmp->wDataLen + 1) & ~1;
290290
dwMemPos += 6;
291-
if (dwMemLength - wDataLen > dwMemLength || dwMemPos + wDataLen > dwMemLength) break;
291+
if (dwMemPos > dwMemLength - wDataLen || wDataLen > dwMemLength) break;
292292

293293
UINT nLines = pmp->wLines;
294294
if ((iPat < MAX_PATTERNS) && (nLines > 0) && (nLines <= 256))
@@ -560,7 +560,7 @@ BOOL CSoundFile::ReadMT2(LPCBYTE lpStream, DWORD dwMemLength)
560560
m_nSamples = (pfh->wSamples < MAX_SAMPLES) ? pfh->wSamples : MAX_SAMPLES-1;
561561
for (UINT iSmp=1; iSmp<=256; iSmp++)
562562
{
563-
if (dwMemPos+36 > dwMemLength || dwMemPos > dwMemLength) return TRUE;
563+
if (dwMemPos > dwMemLength - 36) return TRUE;
564564
const MT2SAMPLE *pms = (MT2SAMPLE *)(lpStream+dwMemPos);
565565
#ifdef MT2DEBUG
566566
if (iSmp <= m_nSamples) Log(" Sample #%d at offset %04X: %d bytes\n", iSmp, dwMemPos, pms->dwDataLen);

0 commit comments

Comments
 (0)