Alistair Leslie-Hughes : msxml3: createProcessingInstruction: Check arguments are valid.
Alexandre Julliard
julliard at winehq.org
Wed Jan 9 07:02:08 CST 2008
Module: wine
Branch: master
Commit: f31cd30841f36c733e48c9167b64b632aa65a0d4
URL: http://source.winehq.org/git/wine.git/?a=commit;h=f31cd30841f36c733e48c9167b64b632aa65a0d4
Author: Alistair Leslie-Hughes <leslie_alistair at hotmail.com>
Date: Tue Jan 8 11:07:12 2008 +1100
msxml3: createProcessingInstruction: Check arguments are valid.
---
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..60a65d0 100644
--- a/dlls/msxml3/domdoc.c
+++ b/dlls/msxml3/domdoc.c
@@ -958,6 +958,12 @@ static HRESULT WINAPI domdoc_createProcessingInstruction(
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 272dfb6..910c044 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");
More information about the wine-cvs
mailing list