diff options
author | Underground78 <underground78@users.sourceforge.net> | 2012-11-10 23:18:06 +0400 |
---|---|---|
committer | Underground78 <underground78@users.sourceforge.net> | 2012-11-10 23:26:18 +0400 |
commit | 5f99d807904e3adaa533b954df8bc37e28c7a4fe (patch) | |
tree | 243fb15185ff7537821044e56030cbd2e084d12f /src/filters/parser/AviSplitter | |
parent | e86c84ffe16e76daac0bd0cfb82850f1c2013462 (diff) |
Avi Splitter: Fix a potential crash with PCM tracks.
Avoid reading in unallocated memory.
This commit fixes ticket #2699.
Diffstat (limited to 'src/filters/parser/AviSplitter')
-rw-r--r-- | src/filters/parser/AviSplitter/AviSplitter.cpp | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/src/filters/parser/AviSplitter/AviSplitter.cpp b/src/filters/parser/AviSplitter/AviSplitter.cpp index e4d037651..37eb019a1 100644 --- a/src/filters/parser/AviSplitter/AviSplitter.cpp +++ b/src/filters/parser/AviSplitter/AviSplitter.cpp @@ -281,7 +281,10 @@ HRESULT CAviSplitterFilter::CreateOutputs(IAsyncReader* pAsyncReader) mt.subtype = FOURCCMap(pwfe->wFormatTag);
}
mt.formattype = FORMAT_WaveFormatEx;
- mt.SetFormat(s->strf.GetData(), max((ULONG)s->strf.GetCount(), sizeof(WAVEFORMATEX)));
+ if (NULL == mt.AllocFormatBuffer(max((ULONG)s->strf.GetCount(), sizeof(WAVEFORMATEX)))) {
+ continue;
+ }
+ memcpy(mt.Format(), s->strf.GetData(), s->strf.GetCount());
pwfe = (WAVEFORMATEX*)mt.Format();
if (s->strf.GetCount() == sizeof(PCMWAVEFORMAT)) {
pwfe->cbSize = 0;
|