[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