Rémi Bernon (@rbernon) commented about dlls/dmime/midi.c:
- TRACE("(%p, %p): stub\n", parser, out_length);
- while (TRUE)
- {
HRESULT hr;
BYTE magic[4] = {0}, last_status = 0;
DWORD length_be;
ULONG length;
ULONG read = 0;
TRACE("Start parsing track %u\n", i);
if ((hr = IStream_Read(parser->stream, magic, sizeof(magic), &read)) != S_OK) return hr;
if (read == 0) break;
if (memcmp(magic, "MTrk", 4) != 0) break;
if ((hr = IStream_Read(parser->stream, &length_be, sizeof(length_be), NULL)) != S_OK) break;
length = GET_BE_DWORD(length_be);
Should check the read size there maybe?