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

List:       xml-cocoon-dev
Subject:    Re: [C2] AIOOBE in XMLByteStreamInterpreter
From:       Santiago Gala <sgala () hisitech ! com>
Date:       2001-05-31 15:37:48
[Download RAW message or body]

Klaasen Tom wrote:

> Hi all,
> 
> I had some troubles with the XMLByteStreamInterpreter today. I noticed it
> has recently changed (this morning), but I don't see how this change could
> cause the bug (but then again, I didn't examine it too closely ;) ).
> 
> At intermittent times, I got an ArrayIndexOutOfBoundsException. Applying the
> patch attached solved the problem for me.
> 


The patch is defensive, and needed for the first occurrence of "" in the 
stream. Instead, I would rather modify readChars( int len ) from 
returning a  char[len] null padded for utf size reduction, and instead 
return a char[] containing the exact number of characters read. This 
could be achieved by using a new StringBuffer(len) to append the UTF-8 
decoded characters, and returning it.toCharArray(). I know it is less 
efficient, but it is cleaner code. This would eliminate the need for the 
whole while (really a hack).

The other bug I mentioned I found (in case anybody audits this one) is 
in XMLByteArrayCompiler. It is using 65535 to compare for the maximum 
string length, while it should use 2 << 15 - 1 or 0x7fff (32767, I 
think) as in the other comparison. Also, the first comparison is done 
*before* encoding to utf, so it is mostly useless as the length can 
increase in the encoding process. The second comparison is still wrong. 
It should compare against 2<<15 *excluding* it, as the interpreter does.

It is highly unlikely, but if a String of exactly 2<<15 bytes after 
encoding is processed, somethings weird will happen. It will be written 
to the stream, but later the interpreter will retrieve the first entry 
in the String map instead...

I would recommend also to have these and other constants used abstracted 
out of the code to an Interface, to ensure consistency.

I could fix this, if you want, and send a patch. But I have a lot of 
work, and would only do it if you agree with the concept beforehand.



 




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

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

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