Alistair Leslie-Hughes : urlmon: The callback parameter can be null, check pointer before using.

Alexandre Julliard julliard at winehq.org
Wed Nov 28 08:01:47 CST 2007


Module: wine
Branch: master
Commit: 9c6fca1ff7c364bb8293b09b507d2e7330891454
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=9c6fca1ff7c364bb8293b09b507d2e7330891454

Author: Alistair Leslie-Hughes <leslie_alistair at hotmail.com>
Date:   Wed Nov 28 22:20:14 2007 +1100

urlmon: The callback parameter can be null, check pointer before using.

---

 dlls/urlmon/umstream.c |   48 ++++++++++++++++++++++++++++++++++++++++--------
 1 files changed, 40 insertions(+), 8 deletions(-)

diff --git a/dlls/urlmon/umstream.c b/dlls/urlmon/umstream.c
index ac5c94e..eeb1570 100644
--- a/dlls/urlmon/umstream.c
+++ b/dlls/urlmon/umstream.c
@@ -410,54 +410,86 @@ static HRESULT WINAPI ProxyBindStatusCallback_OnStartBinding(IBindStatusCallback
                                                IBinding *pib)
 {
     ProxyBindStatusCallback *This = (ProxyBindStatusCallback *)iface;
-    return IBindStatusCallback_OnStartBinding(This->pBSC, dwReserved, pib);
+
+    if(This->pBSC)
+        return IBindStatusCallback_OnStartBinding(This->pBSC, dwReserved, pib);
+
+    return S_OK;
 }
 
 static HRESULT WINAPI ProxyBindStatusCallback_GetPriority(IBindStatusCallback *iface, LONG *pnPriority)
 {
     ProxyBindStatusCallback *This = (ProxyBindStatusCallback *)iface;
-    return IBindStatusCallback_GetPriority(This->pBSC, pnPriority);
+
+    if(This->pBSC)
+        return IBindStatusCallback_GetPriority(This->pBSC, pnPriority);
+
+    return S_OK;
 }
 
 static HRESULT WINAPI ProxyBindStatusCallback_OnLowResource(IBindStatusCallback *iface, DWORD reserved)
 {
     ProxyBindStatusCallback *This = (ProxyBindStatusCallback *)iface;
-    return IBindStatusCallback_OnLowResource(This->pBSC, reserved);
+
+    if(This->pBSC)
+        return IBindStatusCallback_OnLowResource(This->pBSC, reserved);
+
+    return S_OK;
 }
 
 static HRESULT WINAPI ProxyBindStatusCallback_OnProgress(IBindStatusCallback *iface, ULONG ulProgress,
                                            ULONG ulProgressMax, ULONG ulStatusCode, LPCWSTR szStatusText)
 {
     ProxyBindStatusCallback *This = (ProxyBindStatusCallback *)iface;
-    return IBindStatusCallback_OnProgress(This->pBSC, ulProgress,
+
+    if(This->pBSC)
+        return IBindStatusCallback_OnProgress(This->pBSC, ulProgress,
                                           ulProgressMax, ulStatusCode,
                                           szStatusText);
+
+    return S_OK;
 }
 
 static HRESULT WINAPI ProxyBindStatusCallback_OnStopBinding(IBindStatusCallback *iface, HRESULT hresult, LPCWSTR szError)
 {
     ProxyBindStatusCallback *This = (ProxyBindStatusCallback *)iface;
-    return IBindStatusCallback_OnStopBinding(This->pBSC, hresult, szError);
+
+    if(This->pBSC)
+        return IBindStatusCallback_OnStopBinding(This->pBSC, hresult, szError);
+
+    return S_OK;
 }
 
 static HRESULT WINAPI ProxyBindStatusCallback_GetBindInfo(IBindStatusCallback *iface, DWORD *grfBINDF, BINDINFO *pbindinfo)
 {
     ProxyBindStatusCallback *This = (ProxyBindStatusCallback *)iface;
-    return IBindStatusCallback_GetBindInfo(This->pBSC, grfBINDF, pbindinfo);
+
+    if(This->pBSC)
+        return IBindStatusCallback_GetBindInfo(This->pBSC, grfBINDF, pbindinfo);
+
+    return E_INVALIDARG;
 }
 
 static HRESULT WINAPI ProxyBindStatusCallback_OnDataAvailable(IBindStatusCallback *iface, DWORD grfBSCF,
                                                               DWORD dwSize, FORMATETC* pformatetc, STGMEDIUM* pstgmed)
 {
     ProxyBindStatusCallback *This = (ProxyBindStatusCallback *)iface;
-    return IBindStatusCallback_OnDataAvailable(This->pBSC, grfBSCF, dwSize,
+
+    if(This->pBSC)
+        return IBindStatusCallback_OnDataAvailable(This->pBSC, grfBSCF, dwSize,
                                                pformatetc, pstgmed);
+
+    return S_OK;
 }
 
 static HRESULT WINAPI ProxyBindStatusCallback_OnObjectAvailable(IBindStatusCallback *iface, REFIID riid, IUnknown *punk)
 {
     ProxyBindStatusCallback *This = (ProxyBindStatusCallback *)iface;
-    return IBindStatusCallback_OnObjectAvailable(This->pBSC, riid, punk);
+
+    if(This->pBSC)
+        return IBindStatusCallback_OnObjectAvailable(This->pBSC, riid, punk);
+
+    return S_OK;
 }
 
 static HRESULT WINAPI BlockingBindStatusCallback_OnDataAvailable(IBindStatusCallback *iface, DWORD grfBSCF,




More information about the wine-cvs mailing list