Module: wine Branch: master Commit: ba018b52539aa594204c9234eb6c04196852ac78 URL: http://source.winehq.org/git/wine.git/?a=commit;h=ba018b52539aa594204c9234eb...
Author: Nikolay Sivov nsivov@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@codeweavers.com Signed-off-by: Alexandre Julliard julliard@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;