[PATCH] msxml3/saxreader: Handle NULL interface input in parse()

Nikolay Sivov nsivov at codeweavers.com
Fri Mar 17 00:23:57 CDT 2017


Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
---
 dlls/msxml3/saxreader.c       |  3 +++
 dlls/msxml3/tests/saxreader.c | 10 ++++++++++
 2 files changed, 13 insertions(+)

diff --git a/dlls/msxml3/saxreader.c b/dlls/msxml3/saxreader.c
index 82241ad289..0549bc82eb 100644
--- a/dlls/msxml3/saxreader.c
+++ b/dlls/msxml3/saxreader.c
@@ -2664,6 +2664,9 @@ static HRESULT internal_parse(
             ISequentialStream *stream = NULL;
             IXMLDOMDocument *xmlDoc;
 
+            if (!V_UNKNOWN(&varInput))
+                return E_INVALIDARG;
+
             if(IUnknown_QueryInterface(V_UNKNOWN(&varInput),
                         &IID_IXMLDOMDocument, (void**)&xmlDoc) == S_OK)
             {
diff --git a/dlls/msxml3/tests/saxreader.c b/dlls/msxml3/tests/saxreader.c
index cabca9d85c..34d11e6f22 100644
--- a/dlls/msxml3/tests/saxreader.c
+++ b/dlls/msxml3/tests/saxreader.c
@@ -2221,6 +2221,16 @@ static void test_saxreader(void)
 
         SafeArrayDestroy(sa);
 
+        V_VT(&var) = VT_UNKNOWN;
+        V_UNKNOWN(&var) = NULL;
+        hr = ISAXXMLReader_parse(reader, var);
+        ok(hr == E_INVALIDARG, "got %#x\n", hr);
+
+        V_VT(&var) = VT_DISPATCH;
+        V_DISPATCH(&var) = NULL;
+        hr = ISAXXMLReader_parse(reader, var);
+        ok(hr == E_INVALIDARG, "got %#x\n", hr);
+
         stream = create_test_stream(testXML, -1);
         V_VT(&var) = VT_UNKNOWN;
         V_UNKNOWN(&var) = (IUnknown*)stream;
-- 
2.11.0




More information about the wine-patches mailing list