[prev in list] [next in list] [prev in thread] [next in thread] 

List:       xmlbeans-dev
Subject:    [jira] Created: (XMLBEANS-404) entitizeContent CDATA loop iterating
From:       "Andrew Parker (JIRA)" <xmlbeans-dev () xml ! apache ! org>
Date:       2009-03-18 18:51:50
Message-ID: 2088018676.1237402310747.JavaMail.jira () brutus
[Download RAW message or body]

entitizeContent CDATA loop iterating too many times (causes assertion error or \
                ArrayIndexOutOfBoundsException in replace)
-------------------------------------------------------------------------------------------------------------------------


                 Key: XMLBEANS-404
                 URL: https://issues.apache.org/jira/browse/XMLBEANS-404
             Project: XMLBeans
          Issue Type: Bug
    Affects Versions: Version 2.4 
            Reporter: Andrew Parker
            Priority: Critical


In the entitizeContent routine in Saver.java there is a loop responsible for \
modifying bad characters and the ">" in "]]>" when surrounding the text with \
"<![CDATA[" and "]]>".  The loop iterates _lastEmitCch times, but the first two \
characters of the text have already been processed.

This causes problems in one of two rare scenarios:

  The last character in _buf is a ']' and the next two unused characters are ']' and \
'>' respectively  The last two characters in _buf are both ']' and the next unused \
character is a '>'

In these instances replace invokes System.arraycopy with invalid parameters as i is \
outside of the normal _out/_in range resulting in an ArrayIndexOutOfBoundsException \
or an assertion error is they are enabled.

In addition, the first two characters are not checked against isBadChar as they're \
processed outside of this loop.

I believe that a quick and dirty fix for the ArrayIndexOutOfBoundsException (but not \
isBadChar) would be to change this particular loop from:

   for ( int cch = _lastEmitCch ; cch > 0 ; cch-- )

to 

  for ( int cch = _lastEmitCch ; cch > 2; cch-- )

We don't get the isBadChar problem, so I would be grateful if you could confirm the \
quick and dirty fix above fixes the ArrayIndexOutOfBoundsException as I'd like to \
patch our production system.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


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


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic