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

Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Nikolay Sivov 2017-03-17 08:23:57 +03:00 committed by Alexandre Julliard
parent a5031391f4
commit ba018b5253
2 changed files with 13 additions and 0 deletions

View File

@ -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)
{

View File

@ -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;