You are viewing a plain text version of this content. The canonical link for it is here.
Posted to j-dev@xerces.apache.org by bu...@apache.org on 2002/07/25 05:19:48 UTC

DO NOT REPLY [Bug 11156] New: - ArrayIndexOutOfBoundsException parsing file with DOCTYPE but no body

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=11156>.
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=11156

ArrayIndexOutOfBoundsException parsing file with DOCTYPE but no body

           Summary: ArrayIndexOutOfBoundsException parsing file with DOCTYPE
                    but no body
           Product: Xerces2-J
           Version: 2.0.2
          Platform: PC
        OS/Version: Windows NT/2K
            Status: NEW
          Severity: Minor
          Priority: Other
         Component: DOM
        AssignedTo: xerces-j-dev@xml.apache.org
        ReportedBy: idcampbell@yahoo.com


If you try to parse an XML file that consists solely of an XML decl and doctype 
(but no root element or anything else) you get an 
ArrayIndexOutOfBoundsException.
This only happens if you have set an EntityResolver.
Reproducable with test class below. JDK version is 1.4.0.
Thanks.
----------

import org.apache.xerces.parsers.DOMParser;
import java.io.Reader;
import java.io.StringReader;
import org.xml.sax.InputSource;
import org.xml.sax.EntityResolver;

public class TestXerces
{    
    static String testCase = new String(
    "<?xml version=\"1.0\" encoding=\"US-ASCII\"?>"
    + "<!DOCTYPE bob PUBLIC \"-//TEST//DTD TEST DTD//EN\" \"\">"
    );
    
    public static void main(String args[]) throws Throwable
    {
        Reader r = new StringReader(testCase);
        InputSource in = new InputSource(r);
        DOMParser parser = new DOMParser();
        parser.setEntityResolver(new EntityResolver() {
            public InputSource resolveEntity (String publicId, String systemId)
            {
                return new InputSource(new StringReader("<!ELEMENT foo 
EMPTY>"));
            }
        });

        parser.parse(in);
        
        System.exit(0);
    }
}

-----------------

java.lang.ArrayIndexOutOfBoundsException

	at org.apache.xerces.impl.dtd.DTDGrammar.endParameterEntity
(DTDGrammar.java:503)

	at org.apache.xerces.impl.dtd.XMLDTDProcessor.endParameterEntity
(XMLDTDProcessor.java:732)

	at org.apache.xerces.impl.XMLDTDScannerImpl.endEntity
(XMLDTDScannerImpl.java:523)

	at org.apache.xerces.impl.XMLEntityManager.endEntity
(XMLEntityManager.java:1228)

	at org.apache.xerces.impl.XMLEntityManager$EntityScanner.load
(XMLEntityManager.java:3275)

	at org.apache.xerces.impl.XMLEntityManager$EntityScanner.load
(XMLEntityManager.java:3281)

	at org.apache.xerces.impl.XMLEntityManager$EntityScanner.skipSpaces
(XMLEntityManager.java:2930)

	at org.apache.xerces.impl.XMLDTDScannerImpl.skipSeparator
(XMLDTDScannerImpl.java:1901)

	at org.apache.xerces.impl.XMLDTDScannerImpl.scanDecls
(XMLDTDScannerImpl.java:1876)

	at org.apache.xerces.impl.XMLDTDScannerImpl.scanDTDExternalSubset
(XMLDTDScannerImpl.java:304)

	at org.apache.xerces.impl.XMLDocumentScannerImpl$DTDDispatcher.dispatch
(XMLDocumentScannerImpl.java:835)

	at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument
(XMLDocumentFragmentScannerImpl.java:333)

	at org.apache.xerces.parsers.DTDConfiguration.parse
(DTDConfiguration.java:524)

	at org.apache.xerces.parsers.DTDConfiguration.parse
(DTDConfiguration.java:580)

	at org.apache.xerces.parsers.XMLParser.parse(XMLParser.java:152)

	at org.apache.xerces.parsers.DOMParser.parse(DOMParser.java:253)

	at TestXerces.main(TestXerces.java:26)

Exception in thread "main" 
Process exited with exit code 1.

---------------------------------------------------------------------
To unsubscribe, e-mail: xerces-j-dev-unsubscribe@xml.apache.org
For additional commands, e-mail: xerces-j-dev-help@xml.apache.org