Nikolay Sivov : msxml3/saxreader: Handle NULL interface input in parse().

Alexandre Julliard julliard at winehq.org
Fri Mar 17 15:19:46 CDT 2017


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

Author: Nikolay Sivov <nsivov at codeweavers.com>
Date:   Fri Mar 17 08:23:57 2017 +0300

msxml3/saxreader: Handle NULL interface input in parse().

Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 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 82241ad..0549bc8 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 cabca9d..34d11e6 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;




More information about the wine-cvs mailing list