Module: wine Branch: master Commit: 7f8260817ec01378865bca5ed0e15f8f1e03850c URL: https://gitlab.winehq.org/wine/wine/-/commit/7f8260817ec01378865bca5ed0e15f8...
Author: Alfred Agrell floating@muncher.se Date: Thu Nov 23 01:31:24 2023 +0100
winegstreamer: Fix a memory leak in stream_props_GetMediaType.
---
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; }