You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@xalan.apache.org by bu...@apache.org on 2002/07/09 18:05:55 UTC
DO NOT REPLY [Bug 10597] New: -
ArrayIndexOutOfBoundsException after processing invalid XML
DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://nagoya.apache.org/bugzilla/show_bug.cgi?id=10597>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND
INSERTED IN THE BUG DATABASE.
http://nagoya.apache.org/bugzilla/show_bug.cgi?id=10597
ArrayIndexOutOfBoundsException after processing invalid XML
Summary: ArrayIndexOutOfBoundsException after processing invalid
XML
Product: XalanJ2
Version: 2.2.x
Platform: Other
OS/Version: AIX
Status: NEW
Severity: Normal
Priority: Other
Component: org.apache.xalan.transformer
AssignedTo: xalan-dev@xml.apache.org
ReportedBy: jaeda_goodman@bigfoot.com
After processing XML which contains invalid Unicode characters, (e.g. 0x18),
the next time the same stylesheet is used to process valid XML, it usually
falls over with an ArrayIndexOutOfBounds exception.
This is the code snippet which causes the problem:
XslTranslator transform = null;
try {
transform =
xslmanager.loadStyleSheetOnDemand(type.style, type.getName());
if (transform == null)
log.debug("Failed to
load style sheet");
}
catch
(TransformerConfigurationException ex){
log.error("XSLT
Transformation problem", ex);
return false;
}
try {
log.debug("Applying
style sheet");
line =
transform.applyStyleSheet(message);
if (line == null){
log.debug("Failed to
apply style sheet");
}
log.debug("Output
data:"+line);
}
catch (TransformerException ex){
log.error("Error
transforming message", ex); // Failure point
return false;
}
'Failure point' is where an exception is caught the first time the code is
called, signifying an invalid Unicode character
javax.xml.transform.TransformerException: An invalid XML character (Unicode:
0x18) was found in the element content of the document.
at org.apache.xalan.transformer.TransformerImpl.transform
(TransformerImpl.java:660)
at org.apache.xalan.transformer.TransformerImpl.transform
(TransformerImpl.java:1118)
This is handled correctly and the method is called again with valid XML. This
time another exception is thrown:
javax.xml.transform.TransformerException: -6
at org.apache.xalan.transformer.TransformerImpl.transformNode
(TransformerImpl.java:1212)
at org.apache.xalan.transformer.TransformerImpl.run
(TransformerImpl.java:2894)
at java.lang.Thread.run(Thread.java:512)
---------
java.lang.ArrayIndexOutOfBoundsException: -6
at org.apache.xml.utils.NodeVector.popPair(NodeVector.java:307)
at org.apache.xalan.transformer.TransformerImpl.popCurrentMatched
(TransformerImpl.java:2372)
at org.apache.xalan.transformer.TransformerImpl.applyTemplateToNode
(TransformerImpl.java:2038)
at org.apache.xalan.transformer.TransformerImpl.transformNode
(TransformerImpl.java:1189)
at org.apache.xalan.transformer.TransformerImpl.run
(TransformerImpl.java:2894)
at java.lang.Thread.run(Thread.java:512)
However, the same XML can be processed if it is not proceeded by invalid XML.
Occasionally the second message is processed correctly, but if it is, the Java
application hangs and does not terminate correctly.