Rob Shearman : ole32: Validate the parameters to DataCache_Cache.

Alexandre Julliard julliard at winehq.org
Wed Nov 14 07:29:41 CST 2007


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

Author: Rob Shearman <rob at codeweavers.com>
Date:   Tue Nov 13 18:58:34 2007 +0000

ole32: Validate the parameters to DataCache_Cache.

---

 dlls/ole32/datacache.c  |    4 ++++
 dlls/ole32/tests/ole2.c |    6 ++++++
 2 files changed, 10 insertions(+), 0 deletions(-)

diff --git a/dlls/ole32/datacache.c b/dlls/ole32/datacache.c
index 1b43eb5..18cd5c2 100644
--- a/dlls/ole32/datacache.c
+++ b/dlls/ole32/datacache.c
@@ -1971,6 +1971,10 @@ static HRESULT WINAPI DataCache_Cache(
     HRESULT hr;
 
     TRACE("(%p, 0x%x, %p)\n", pformatetc, advf, pdwConnection);
+
+    if (!pformatetc || !pdwConnection)
+        return E_INVALIDARG;
+
     TRACE("pformatetc = %s\n", debugstr_formatetc(pformatetc));
 
     *pdwConnection = 0;
diff --git a/dlls/ole32/tests/ole2.c b/dlls/ole32/tests/ole2.c
index bcac1b4..88b58e7 100644
--- a/dlls/ole32/tests/ole2.c
+++ b/dlls/ole32/tests/ole2.c
@@ -1128,6 +1128,12 @@ static void test_data_cache(void)
     hr = IOleCache_Uncache(pOleCache, 0xdeadbeef);
     ok(hr == OLE_E_NOCONNECTION, "IOleCache_Uncache with invalid value should return OLE_E_NOCONNECTION instead of 0x%x\n", hr);
 
+    hr = IOleCache_Cache(pOleCache, NULL, 0, &dwConnection);
+    ok(hr == E_INVALIDARG, "IOleCache_Cache with NULL fmtetc should have returned E_INVALIDARG instead of 0x%08x\n", hr);
+
+    hr = IOleCache_Cache(pOleCache, NULL, 0, NULL);
+    ok(hr == E_INVALIDARG, "IOleCache_Cache with NULL pdwConnection should have returned E_INVALIDARG instead of 0x%08x\n", hr);
+
     for (fmtetc.cfFormat = CF_TEXT; fmtetc.cfFormat < CF_MAX; fmtetc.cfFormat++)
     {
         int i;




More information about the wine-cvs mailing list