From 3209f949b342652fa4893bdffdb292c05cc843e9 Mon Sep 17 00:00:00 2001 From: Eric Pouech Date: Mon, 1 Apr 2002 21:02:27 +0000 Subject: [PATCH] Fixed size of buffers in conversion. --- dlls/winmm/wavemap/wavemap.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/dlls/winmm/wavemap/wavemap.c b/dlls/winmm/wavemap/wavemap.c index 5d12130eba4..9b1e6dfdcbc 100644 --- a/dlls/winmm/wavemap/wavemap.c +++ b/dlls/winmm/wavemap/wavemap.c @@ -233,10 +233,18 @@ static DWORD wodWrite(WAVEMAPDATA* wom, LPWAVEHDR lpWaveHdrSrc, DWORD dwParam2) lpWaveHdrSrc->dwFlags |= WHDR_INQUEUE; ash = (PACMSTREAMHEADER)lpWaveHdrSrc->reserved; + /* acmStreamConvert will actually check that the new size is less than initial size */ + ash->cbSrcLength = lpWaveHdrSrc->dwBufferLength; if (acmStreamConvert(wom->hAcmStream, ash, 0L) != MMSYSERR_NOERROR) return MMSYSERR_ERROR; lpWaveHdrDst = (LPWAVEHDR)((LPSTR)ash + sizeof(ACMSTREAMHEADER)); + if (ash->cbDstLengthUsed == 0) + { + /* something went wrong in decoding */ + FIXME("Got 0 length\n"); + return MMSYSERR_ERROR; + } lpWaveHdrDst->dwBufferLength = ash->cbDstLengthUsed; return waveOutWrite(wom->hInnerWave, lpWaveHdrDst, sizeof(*lpWaveHdrDst)); }