Nikolay Sivov : msxml3: ::get_namespaceURI() doesn' t reset out pointer on invalid index.
Alexandre Julliard
julliard at winehq.org
Mon Jan 23 13:00:57 CST 2012
Module: wine
Branch: master
Commit: 91390a720fd0c26c89609e61dd6cd4f497482a25
URL: http://source.winehq.org/git/wine.git/?a=commit;h=91390a720fd0c26c89609e61dd6cd4f497482a25
Author: Nikolay Sivov <nsivov at codeweavers.com>
Date: Mon Jan 23 07:35:20 2012 +0300
msxml3: ::get_namespaceURI() doesn't reset out pointer on invalid index.
---
dlls/msxml3/schema.c | 4 ++--
dlls/msxml3/tests/schema.c | 12 +++++++-----
2 files changed, 9 insertions(+), 7 deletions(-)
diff --git a/dlls/msxml3/schema.c b/dlls/msxml3/schema.c
index 9de3768..6913e35 100644
--- a/dlls/msxml3/schema.c
+++ b/dlls/msxml3/schema.c
@@ -1197,16 +1197,16 @@ static HRESULT WINAPI schema_cache_get_namespaceURI(IXMLDOMSchemaCollection2* if
LONG index, BSTR* len)
{
schema_cache* This = impl_from_IXMLDOMSchemaCollection2(iface);
- cache_index_data data = {index,len};
+ cache_index_data data = {index, len};
TRACE("(%p)->(%i %p)\n", This, index, len);
if (!len)
return E_POINTER;
- *len = NULL;
if (index >= xmlHashSize(This->cache))
return E_FAIL;
+ *len = NULL;
xmlHashScan(This->cache, cache_index, &data);
return S_OK;
}
diff --git a/dlls/msxml3/tests/schema.c b/dlls/msxml3/tests/schema.c
index 48e9d4d..c350267 100644
--- a/dlls/msxml3/tests/schema.c
+++ b/dlls/msxml3/tests/schema.c
@@ -853,11 +853,12 @@ static void test_length(void)
static void test_collection_content(void)
{
IXMLDOMDocument2 *schema1, *schema2, *schema3, *schema4, *schema5;
+ BSTR content[5] = {NULL, NULL, NULL, NULL, NULL};
IXMLDOMSchemaCollection *cache1, *cache2;
VARIANT_BOOL b;
- BSTR bstr;
- BSTR content[5] = {NULL, NULL, NULL, NULL, NULL};
LONG length;
+ HRESULT hr;
+ BSTR bstr;
int i, j;
schema1 = create_document_version(30, &IID_IXMLDOMDocument2);
@@ -935,10 +936,11 @@ static void test_collection_content(void)
IXMLDOMDocument2_Release(schema5);
}
- bstr = NULL;
+ bstr = (void*)0xdeadbeef;
/* error if index is out of range */
- ole_expect(IXMLDOMSchemaCollection_get_namespaceURI(cache1, 3, &bstr), E_FAIL);
- SysFreeString(bstr);
+ hr = IXMLDOMSchemaCollection_get_namespaceURI(cache1, 3, &bstr);
+ EXPECT_HR(hr, E_FAIL);
+ ok(bstr == (void*)0xdeadbeef, "got %p\n", bstr);
/* error if return pointer is NULL */
ole_expect(IXMLDOMSchemaCollection_get_namespaceURI(cache1, 0, NULL), E_POINTER);
/* pointer is checked first */
More information about the wine-cvs
mailing list