[PATCH] amstream: Check params in IAMMultiMediaStreamImpl_OpenFile.

Christian Costa titan.costa at gmail.com
Thu Oct 11 16:59:37 CDT 2012


---
 dlls/amstream/amstream.c |   12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)

diff --git a/dlls/amstream/amstream.c b/dlls/amstream/amstream.c
index 293e2b9..53d7c62 100644
--- a/dlls/amstream/amstream.c
+++ b/dlls/amstream/amstream.c
@@ -397,7 +397,7 @@ static HRESULT WINAPI IAMMultiMediaStreamImpl_AddMediaStream(IAMMultiMediaStream
     return hr;
 }
 
-static HRESULT WINAPI IAMMultiMediaStreamImpl_OpenFile(IAMMultiMediaStream* iface, LPCWSTR pszFileName, DWORD dwFlags)
+static HRESULT WINAPI IAMMultiMediaStreamImpl_OpenFile(IAMMultiMediaStream* iface, LPCWSTR filename, DWORD flags)
 {
     IAMMultiMediaStreamImpl *This = impl_from_IAMMultiMediaStream(iface);
     HRESULT ret = S_OK;
@@ -407,14 +407,20 @@ static HRESULT WINAPI IAMMultiMediaStreamImpl_OpenFile(IAMMultiMediaStream* ifac
     PIN_DIRECTION pin_direction;
     const WCHAR sourceW[] = {'S','o','u','r','c','e',0};
 
-    TRACE("(%p/%p)->(%s,%x)\n", This, iface, debugstr_w(pszFileName), dwFlags);
+    TRACE("(%p/%p)->(%s,%x)\n", This, iface, debugstr_w(filename), flags);
+
+    if (!filename)
+        return E_POINTER;
+
+    if (flags & ~(AMMSF_NOCLOCK | AMMSF_NORENDER | AMMSF_RENDERALLSTREAMS | AMMSF_RENDERTOEXISTING | AMMSF_RUN))
+        return E_INVALIDARG;
 
     /* If Initialize was not called before, we do it here */
     if (!This->pFilterGraph)
         ret = IAMMultiMediaStream_Initialize(iface, STREAMTYPE_READ, 0, NULL);
 
     if (SUCCEEDED(ret))
-        ret = IGraphBuilder_AddSourceFilter(This->pFilterGraph, pszFileName, sourceW, &BaseFilter);
+        ret = IGraphBuilder_AddSourceFilter(This->pFilterGraph, filename, sourceW, &BaseFilter);
 
     if (SUCCEEDED(ret))
         ret = IBaseFilter_EnumPins(BaseFilter, &EnumPins);




More information about the wine-patches mailing list