Microsoft KB Archive/890077

= List of bugs that are fixed in Microsoft XML 3.0 Service Pack 5 =

Article ID: 890077

Article Last Modified on 11/16/2007

-

APPLIES TO


 * Microsoft XML Parser 3.0

-



Contents

 * INTRODUCTION
 * MORE INFORMATION
 * Problems that are fixed in MXSML 3.0 SP5
 * New features that are included in MSXML 3.0 SP5



INTRODUCTION
This article lists the significant changes in Microsoft XML Parser (MSXML) 3.0 Service Pack 5 (SP5). MSXML 3.0 SP5 is included with Microsoft Windows XP Service Pack 2. You can also download MSXML 3.0 SP5 from the Microsoft Download Center:

Download the MSXML 3.0 SP5 package now.

For additional information about how to download Microsoft Support files, click the following article number to view the article in the Microsoft Knowledge Base:

119591 How to obtain Microsoft support files from online services

Microsoft scanned this file for viruses. Microsoft used the most current virus-detection software that was available on the date that the file was posted. The file is stored on security-enhanced servers that help to prevent any unauthorized changes to the file.

back to the top



Problems that are fixed in MXSML 3.0 SP5
The following lists the significant general problems that are fixed in MSXML 3.0 SP5.
 * Fixes for failures that may occur during low memory conditions.
 * Fixes for memory leak issues.
 * Performance enhancements that are related to the internal treatment of spin locks and critical section caching.
 * Fixes for problems that occur in high-stress situations.
 * Fixes for problems that occur while an MSXML application is running under Application Verifier.
 * Fixes for security issues. These issues include enhancing security for XMLHTTP host header spoofing and denial-of-service attacks for applications that except XML files that may contain many attributes.

The following lists specific problems that are fixed in this service pack:



  Applications may stop responding when a document is saved to itself. For example, this problem occurs when you use the save method to save a file to itself as shown in the following code: xmldoc.save(xmldoc) 



  A problem that occurs when a node from one Document Object Model (DOM) document is copied to another DOM document. For example, assume that you have node  in a read-only DOM document and node  in a read/write DOM document. This problem occurs if you clone the  node, and you try to append the  node to the  node. This situation is shown in the following code: NY.appendChild( NX.cloneNode(true)) </li></ul>

<div class="moreinformation_section">


 * Cached XML files generate unnecessary HTTP GET requests for embedded XML/Extensible Stylesheet Language for Transformation (XSLT) files. For example, if you load an .xml file that contains an .xsl file that refers to another .xml file, the referenced files are refreshed even though the .xml file was cached.

<div class="moreinformation_section">


 * The XMLHTTP object crashes when multiples of 4092 bytes of data are sent by using the send method.

<div class="moreinformation_section">


 * A memory leak and a security problem occur in XMLHTTP code if credentials are required when the send method is called.

<div class="moreinformation_section">


 * Included .xsl files are not downloaded. This problem occurs because MSXML 3.0 performs HTTP POST requests instead of GET requests for the included files.

<div class="moreinformation_section">


 * Redirects to relative pages return an &quot;Unspecified Error&quot; error message when the ServerXMLHTTP send method is called.

<div class="moreinformation_section">


 * XMLHTTP has problems when it translates responses that include multi-byte characters.

<div class="moreinformation_section">


 * The AllowDocumentFunction property returns the incorrect value. This property was added in MSXML 3.0 SP4.

<div class="moreinformation_section">


 * The EBay Turbo Lister application crashes because of an Extensible Stylesheet Language (XSL) problem in MSXML 3.0 SP4. The problem occurs when many nodes are transformed under stress.

back to the top

<div class="moreinformation_section">

New features that are included in MSXML 3.0 SP5
MSXML 3.0 SP5 includes some new properties, a new flag, and a new interface to help prevent DOS attacks. You need the updated C++ header file from the updated MSXML SDK to use the new flag and the new interface.

A Simple API for XML (SAX) parser property that is named &quot;prohibit-dtd&quot; is added
Property values for the prohibit-dtd property:
 * false (VARIANT_FALSE) = (default) Allow a document type definition (DTD) to be included in an XML document
 * true (VARIANT_TRUE) = Prohibit a DTD from being included in an XML document

This feature lets users prohibit DTD use. Prohibiting DTD use may help prevent DOS attacks in situations where many entity resolutions may cause applications to stop responding. When a DTD is used, this feature can prohibit DTDs. It can also prevent the send error &quot;Invalid at the top level of the document&quot; (XML_E_INVALIDATROOTLEVEL, 0xE52D).

A DOM property that is named &quot;ProhibitDTD&quot; is added
The ProhibitDTD property does not allow DTDs to be included in XML documents. By default, this property is set to FALSE. When the property is set to FALSE, DTDs are allowed. When the property is set to TRUE, DTDs are not allowed. This property is not copied when the DOM is cloned.

This property let users prohibit DTD use. Preventing DTD use may help prevent DOS attacks in situations where many entity resolutions may cause applications to stop responding. Setting this property prohibits DTD use. When a DTD is used, the user receives the error &quot;Invalid at the top level of the document&quot; (XML_E_INVALIDATROOTLEVEL, 0xE52D).

Example xmldoc.setProperty(&quot;ProhibitDTD&quot;, True); // Jscript xmldoc.setProperty &quot;ProhibitDTD&quot;, True  'VBScript Note The ProhibitDTD property works even if data is loaded from another DOM document.

Example dom1.load(&quot;file with DTD&quot;); dom2.setProperty(&quot;ProhibitDTD&quot;, true); dom2.Load(dom1);  <--- This will Error

The IXMLParser::SetFlags method allows a new flag that is named XMLFLAG_PROHIBIT_DTD
This flag lets users prohibit DTD use. Prohibiting DTD use may help prevent DOS attack in situations where many entity resolutions may cause applications to stop responding. Setting this flag with the IXMLParser::SetFlags method prohibits DTD use. When a DTD is used, the user receives the error &quot;Invalid at the top level of the document&quot; (XML_E_INVALIDATROOTLEVEL, 0xE52D).

A new interface that is named IXMLParser3 is added
The IXMLParser3 interface is added to set the max-attributes-per-element property to limit the number of attributes for each element. interface IXMLParser3 : IXMLParser2 {   HRESULT SetProperty(        [in] const WCHAR* pwcName,        [in] VARIANT value); HRESULT GetProperty(       [in] const WCHAR* pwcName,        [out,retval] VARIANT* value); }; New property name

&quot;max-attributes-per-element&quot;

Default Value

-1 ( no limit )

Usage pParser->SetProperty(L&quot;max-attributes-per-element&quot;, value ) /*value is VARIANT containing a LONG*/ Note This count does not include the default attributes that are passed through DTDs or schemas.

For more information about this interface, see the following Microsoft Developer Network (MSDN) Web site:

http://msdn2.microsoft.com/en-us/library/ms759165.aspx

back to the top

Keywords: kbservicepack kbhowto kbxml kbinfo kbfix KB890077

-

[mailto:TECHNET@MICROSOFT.COM Send feedback to Microsoft]

© Microsoft Corporation. All rights reserved.