Radu Coravu created XERCESJ-1570:
------------------------------------
Summary: Stack overflow when validating XML with XML Schema (using
1.1)
Key: XERCESJ-1570
URL: https://issues.apache.org/jira/browse/XERCESJ-1570
Project: Xerces2-J
Issue Type: Bug
Components: XML Schema 1.1 Datatypes
Affects Versions: 2.11.0
Reporter: Radu Coravu
Fix For: 2.11.0
The XML is like:
<?xml version="1.0" encoding="UTF-8"?>
<personnel xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="personal.xsd">
<person xsi:type="testType"></person>
</personnel>
The XML Schema is like:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:complexType name="testType"/>
<xs:element name="personnel">
<xs:complexType>
<xs:sequence>
<xs:element ref="person" minOccurs="1" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:complexType name="fidji">
<xs:attribute name="attr"/>
</xs:complexType>
<xs:element name="person" type="fidji"/>
</xs:schema>
The schema is parsed as an XML Schema 1.1 and then used to validate the XML.
The stack overflow is like:
java.lang.StackOverflowError
at
org.apache.xerces.impl.xs.XSConstraints.checkComplexDerivation(XSConstraints.java:216)
at
org.apache.xerces.impl.xs.XSConstraints.checkComplexDerivation(XSConstraints.java:241)
at
org.apache.xerces.impl.xs.XSConstraints.checkComplexDerivation(XSConstraints.java:241)
at
org.apache.xerces.impl.xs.XSConstraints.checkComplexDerivation(XSConstraints.java:241)
at
org.apache.xerces.impl.xs.XSConstraints.checkComplexDerivation(XSConstraints.java:241)
at
org.apache.xerces.impl.xs.XSConstraints.checkComplexDerivation(XSConstraints.java:241)
at
org.apache.xerces.impl.xs.XSConstraints.checkComplexDerivation(XSConstraints.java:241)
at
org.apache.xerces.impl.xs.XSConstraints.checkComplexDerivation(XSConstraints.java:241)
at
org.apache.xerces.impl.xs.XSConstraints.checkComplexDerivation(XSConstraints.java:241)
at
org.apache.xerces.impl.xs.XSConstraints.checkComplexDerivation(XSConstraints.java:241)
at
org.apache.xerces.impl.xs.XSConstraints.checkComplexDerivation(XSConstraints.java:241)
at
org.apache.xerces.impl.xs.XSConstraints.checkComplexDerivation(XSConstraints.java:241)
at
org.apache.xerces.impl.xs.XSConstraints.checkComplexDerivation(XSConstraints.java:241)
at
org.apache.xerces.impl.xs.XSConstraints.checkComplexDerivation(XSConstraints.java:241)
at
org.apache.xerces.impl.xs.XSConstraints.checkComplexDerivation(XSConstraints.java:241)
at
org.apache.xerces.impl.xs.XSConstraints.checkTypeDerivationOk(XSConstraints.java:118)
at
org.apache.xerces.impl.xs.XMLSchemaValidatorXerces.getAndCheckXsiType(XMLSchemaValidatorXerces.java:2959)
at
org.apache.xerces.impl.xs.XMLSchemaValidatorXerces.handleStartElement(XMLSchemaValidatorXerces.java:2252)
at
org.apache.xerces.impl.xs.XMLSchemaValidatorXerces.startElement(XMLSchemaValidatorXerces.java:815)
at
org.apache.xerces.impl.xs.XMLSchemaValidator.startElement(XMLSchemaValidator.java:87)
at
org.apache.xerces.xinclude.XIncludeHandler.startElement(XIncludeHandler.java:963)
at
org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanStartElement(XMLNSDocumentScannerImpl.java:268)
at
org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(XMLDocumentFragmentScannerImpl.java:1655)
I added some logging in XSConstraints, it has some recursive code like:
if (directBase.getTypeCategory() == XSTypeDefinition.COMPLEX_TYPE)
return checkComplexDerivation((XSComplexTypeDecl)directBase, base,
block);
which could be guarded to be something like:
if (directBase.getTypeCategory() == XSTypeDefinition.COMPLEX_TYPE
&& directBase != derived
)
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]