From: Alfred Agrell floating@muncher.se
--- dlls/winegstreamer/wm_reader.c | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-)
diff --git a/dlls/winegstreamer/wm_reader.c b/dlls/winegstreamer/wm_reader.c index 4751cc9da2e..6bb73e9a47b 100644 --- a/dlls/winegstreamer/wm_reader.c +++ b/dlls/winegstreamer/wm_reader.c @@ -555,16 +555,18 @@ static HRESULT WINAPI stream_props_GetMediaType(IWMMediaProps *iface, WM_MEDIA_T return E_OUTOFMEMORY;
*size = sizeof(stream_mt) + stream_mt.cbFormat; - if (!mt) - return S_OK; - if (req_size < *size) - return ASF_E_BUFFERTOOSMALL; + if (mt && req_size >= *size) + { + strmbase_dump_media_type(&stream_mt);
- strmbase_dump_media_type(&stream_mt); + memcpy(mt, &stream_mt, sizeof(*mt)); + memcpy(mt + 1, stream_mt.pbFormat, stream_mt.cbFormat); + mt->pbFormat = (BYTE *)(mt + 1); + } + FreeMediaType(&stream_mt);
- memcpy(mt, &stream_mt, sizeof(*mt)); - memcpy(mt + 1, stream_mt.pbFormat, stream_mt.cbFormat); - mt->pbFormat = (BYTE *)(mt + 1); + if (mt && req_size < *size) + return ASF_E_BUFFERTOOSMALL; return S_OK; }