Nikolay Sivov : xmllite/reader: Handle NULL argument in GetNodeType().

Alexandre Julliard julliard at winehq.org
Mon Jan 30 15:39:16 CST 2017


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

Author: Nikolay Sivov <nsivov at codeweavers.com>
Date:   Fri Jan 27 11:17:41 2017 +0300

xmllite/reader: Handle NULL argument in GetNodeType().

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

---

 dlls/xmllite/reader.c       | 4 ++++
 dlls/xmllite/tests/reader.c | 7 +++++++
 2 files changed, 11 insertions(+)

diff --git a/dlls/xmllite/reader.c b/dlls/xmllite/reader.c
index de61d13..1bb1cab 100644
--- a/dlls/xmllite/reader.c
+++ b/dlls/xmllite/reader.c
@@ -2786,8 +2786,12 @@ static HRESULT WINAPI xmlreader_Read(IXmlReader* iface, XmlNodeType *nodetype)
 static HRESULT WINAPI xmlreader_GetNodeType(IXmlReader* iface, XmlNodeType *node_type)
 {
     xmlreader *This = impl_from_IXmlReader(iface);
+
     TRACE("(%p)->(%p)\n", This, node_type);
 
+    if (!node_type)
+        return E_INVALIDARG;
+
     *node_type = reader_get_nodetype(This);
     return This->state == XmlReadState_Closed ? S_FALSE : S_OK;
 }
diff --git a/dlls/xmllite/tests/reader.c b/dlls/xmllite/tests/reader.c
index 8e50b13..7144df7 100644
--- a/dlls/xmllite/tests/reader.c
+++ b/dlls/xmllite/tests/reader.c
@@ -427,6 +427,13 @@ static void test_reader_create(void)
     ok(hr == S_FALSE, "got %08x\n", hr);
     ok(nodetype == XmlNodeType_None, "got %d\n", nodetype);
 
+    /* crashes on XP, 2k3, works on newer versions */
+    if (0)
+    {
+        hr = IXmlReader_GetNodeType(reader, NULL);
+        ok(hr == E_INVALIDARG, "got %08x\n", hr);
+    }
+
     resolver = (void*)0xdeadbeef;
     hr = IXmlReader_GetProperty(reader, XmlReaderProperty_XmlResolver, (LONG_PTR*)&resolver);
     ok(hr == S_OK, "got 0x%08x\n", hr);




More information about the wine-cvs mailing list