From 363873b407d791e4e49344deb93a0372af34ad56 Mon Sep 17 00:00:00 2001 From: Johannes Anderwald Date: Fri, 29 Oct 2010 01:09:13 +0000 Subject: [PATCH] [PORTCLS] - Fix stupid bug which lead to access an invalid buffer. - dedicated to igorko svn path=/trunk/; revision=49337 --- .../wdm/audio/backpln/portcls/pin_wavecyclic.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/reactos/drivers/wdm/audio/backpln/portcls/pin_wavecyclic.cpp b/reactos/drivers/wdm/audio/backpln/portcls/pin_wavecyclic.cpp index 226457c1059..a3f65ba978e 100644 --- a/reactos/drivers/wdm/audio/backpln/portcls/pin_wavecyclic.cpp +++ b/reactos/drivers/wdm/audio/backpln/portcls/pin_wavecyclic.cpp @@ -699,15 +699,15 @@ CPortPinWaveCyclic::UpdateCommonBuffer( if (!NT_SUCCESS(Status)) { Gap = Position - m_CommonBufferOffset; - if (Gap > m_FrameSize) + if (Gap > BufferLength) { // insert silence samples DPRINT1("Inserting Silence Buffer Offset %lu GapLength %lu\n", m_CommonBufferOffset, BufferLength); m_Stream->Silence((PUCHAR)m_CommonBuffer + m_CommonBufferOffset, BufferLength); m_CommonBufferOffset += BufferLength; - break; } + break; } BytesToCopy = min(BufferLength, BufferSize); @@ -758,7 +758,7 @@ CPortPinWaveCyclic::UpdateCommonBufferOverlap( if (!NT_SUCCESS(Status)) { Gap = m_CommonBufferSize - m_CommonBufferOffset + Position; - if (Gap > m_FrameSize) + if (Gap > BufferLength) { // insert silence samples DPRINT1("Overlap Inserting Silence Buffer Size %lu Offset %lu Gap %lu Position %lu\n", m_CommonBufferSize, m_CommonBufferOffset, Gap, Position); @@ -771,7 +771,7 @@ CPortPinWaveCyclic::UpdateCommonBufferOverlap( BytesToCopy = min(BufferLength, BufferSize); - if (m_Capture) + if (m_Capture) { m_DmaChannel->CopyFrom(Buffer, (PUCHAR)m_CommonBuffer + m_CommonBufferOffset, @@ -1290,7 +1290,7 @@ CPortPinWaveCyclic::Init( PC_ASSERT(NT_SUCCESS(Status)); PC_ASSERT(m_FrameSize); - DPRINT1("Bits %u Samples %u Channels %u Tag %u FrameSize %u CommonBufferSize %lu\n", ((PKSDATAFORMAT_WAVEFORMATEX)(DataFormat))->WaveFormatEx.wBitsPerSample, ((PKSDATAFORMAT_WAVEFORMATEX)(DataFormat))->WaveFormatEx.nSamplesPerSec, ((PKSDATAFORMAT_WAVEFORMATEX)(DataFormat))->WaveFormatEx.nChannels, ((PKSDATAFORMAT_WAVEFORMATEX)(DataFormat))->WaveFormatEx.wFormatTag, m_FrameSize, m_CommonBufferSize); + DPRINT1("Bits %u Samples %u Channels %u Tag %u FrameSize %u CommonBufferSize %lu, CommonBuffer %p\n", ((PKSDATAFORMAT_WAVEFORMATEX)(DataFormat))->WaveFormatEx.wBitsPerSample, ((PKSDATAFORMAT_WAVEFORMATEX)(DataFormat))->WaveFormatEx.nSamplesPerSec, ((PKSDATAFORMAT_WAVEFORMATEX)(DataFormat))->WaveFormatEx.nChannels, ((PKSDATAFORMAT_WAVEFORMATEX)(DataFormat))->WaveFormatEx.wFormatTag, m_FrameSize, m_CommonBufferSize, m_DmaChannel->SystemAddress()); /* set up allocator framing */