amstream: Destroy BaseFilter after MediaStreamFilterImpl child class.

Thomas Faber thomas.faber at reactos.org
Sun Jul 27 09:04:56 CDT 2014


Missed this in the last series. Use after free of the filter's critical
section once again.
-------------- next part --------------
From 81c9355b4b2b354da9ee7d6347f3014fbbadbfb1 Mon Sep 17 00:00:00 2001
From: Thomas Faber <thomas.faber at reactos.org>
Date: Tue, 22 Jul 2014 15:19:44 +0200
Subject: amstream: Destroy BaseFilter after MediaStreamFilterImpl child class.

---
 dlls/amstream/mediastreamfilter.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/dlls/amstream/mediastreamfilter.c b/dlls/amstream/mediastreamfilter.c
index 8811455..8c26c8e 100644
--- a/dlls/amstream/mediastreamfilter.c
+++ b/dlls/amstream/mediastreamfilter.c
@@ -238,7 +238,7 @@ static ULONG WINAPI MediaStreamFilterImpl_AddRef(IMediaStreamFilter *iface)
 static ULONG WINAPI MediaStreamFilterImpl_Release(IMediaStreamFilter *iface)
 {
     IMediaStreamFilterImpl *This = impl_from_IMediaStreamFilter(iface);
-    ULONG ref = BaseFilterImpl_Release(&This->filter.IBaseFilter_iface);
+    ULONG ref = InterlockedDecrement(&This->filter.refCount);
 
     TRACE("(%p)->(): new ref = %u\n", iface, ref);
 
@@ -250,6 +250,7 @@ static ULONG WINAPI MediaStreamFilterImpl_Release(IMediaStreamFilter *iface)
             IMediaStream_Release(This->streams[i]);
             IPin_Release(This->pins[i]);
         }
+        BaseFilter_Destroy(&This->filter);
         HeapFree(GetProcessHeap(), 0, This);
     }
 
-- 
1.9.0.msysgit.0



More information about the wine-patches mailing list