[PATCH] createProcessingInstruction check arguments are valid

Alistair Leslie-Hughes leslie_alistair at hotmail.com
Mon Jan 7 18:07:12 CST 2008


---
 dlls/msxml3/domdoc.c       |    6 ++++++
 dlls/msxml3/tests/domdoc.c |   26 ++++++++++++++++++++++++++
 2 files changed, 32 insertions(+), 0 deletions(-)

diff --git a/dlls/msxml3/domdoc.c b/dlls/msxml3/domdoc.c
index d955926..362ea93 100644
--- a/dlls/msxml3/domdoc.c
+++ b/dlls/msxml3/domdoc.c
@@ -957,6 +957,12 @@ static HRESULT WINAPI domdoc_createProcessingInstruction(
     xmlChar *xml_target, *xml_content;
 
     TRACE("%p->(%s %s %p)\n", iface, debugstr_w(target), debugstr_w(data), pi);
+    
+    if(!pi)
+        return E_INVALIDARG;
+        
+    if(!target || lstrlenW(target) == 0)
+        return E_FAIL;
 
     xml_target = xmlChar_from_wchar((WCHAR*)target);
     xml_content = xmlChar_from_wchar((WCHAR*)data);
diff --git a/dlls/msxml3/tests/domdoc.c b/dlls/msxml3/tests/domdoc.c
index e09914b..52d4efd 100644
--- a/dlls/msxml3/tests/domdoc.c
+++ b/dlls/msxml3/tests/domdoc.c
@@ -348,6 +348,7 @@ static void test_domdoc( void )
     IXMLDOMComment *node_comment = NULL;
     IXMLDOMAttribute *node_attr = NULL;
     IXMLDOMNode *nodeChild = NULL;
+    IXMLDOMProcessingInstruction *nodePI = NULL;
     VARIANT_BOOL b;
     VARIANT var;
     BSTR str;
@@ -548,6 +549,31 @@ static void test_domdoc( void )
     ok( r == S_OK, "returns %08x\n", r );
     IXMLDOMText_Release( node_attr);
 
+    /* test Processing Instruction */
+    str = SysAllocStringLen(NULL, 0);
+    r = IXMLDOMDocument_createProcessingInstruction(doc, str, str, NULL);
+    ok( r == E_INVALIDARG, "returns %08x\n", r );
+    r = IXMLDOMDocument_createProcessingInstruction(doc, NULL, str, &nodePI);
+    ok( r == E_FAIL, "returns %08x\n", r );
+    r = IXMLDOMDocument_createProcessingInstruction(doc, str, str, &nodePI);
+    ok( r == E_FAIL, "returns %08x\n", r );
+    SysFreeString(str);
+    
+    r = IXMLDOMDocument_createProcessingInstruction(doc, _bstr_("xml"), _bstr_("version=\"1.0\""), &nodePI);
+    ok( r == S_OK, "returns %08x\n", r );
+    if(nodePI)
+    {
+        /* Last Child Checks */
+        r = IXMLDOMProcessingInstruction_get_lastChild(nodePI, NULL);
+        ok(r == E_INVALIDARG, "ret %08x\n", r );
+
+        nodeChild = (IXMLDOMNode*)0x1;
+        r = IXMLDOMProcessingInstruction_get_lastChild(nodePI, &nodeChild);                    
+        ok(r == S_FALSE, "ret %08x\n", r );
+        ok(nodeChild == NULL, "nodeChild not NULL\n");     
+    }    
+    IXMLDOMProcessingInstruction_Release(nodePI);    
+
     r = IXMLDOMDocument_Release( doc );
     ok( r == 0, "document ref count incorrect\n");
 
-- 
1.5.3.7


--------------070200060403040408050204--




More information about the wine-patches mailing list