You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@poi.apache.org by Amol Deshmukh <ad...@hobsons-us.com> on 2005/07/08 17:43:23 UTC

RE: [Bug 35527] - ArrayIndexOutOfBoundsException when reading xl s file

Well, 
I left out mentioning that the changed code is a part
of ObjRecord.fillFields(..)

I believe writing out is handled as well. Actually,
since fillFields(..) is called by the constructor,
I think writing out is handled as a result.

I ran all unit tests and tried reading the file that 
caused the error and writing it out and it seemed
to work just fine (ie. no outofbounds exception and
files opened up just fine).

BTW, the unit tests all ran fine even before i made
the fix, so there was actually no failing test case
for the bugs. I have ensured that there are no
regression errors.

Regards,
~ amol


> -----Original Message-----
> From: Avik Sengupta [mailto:avik.sengupta@itellix.com]
> Sent: Friday, July 08, 2005 11:11 AM
> To: POI Developers List
> Subject: Re: [Bug 35527] - ArrayIndexOutOfBoundsException when reading
> xls file
> 
> 
> Thanks Amol, this was a long standing bug. 
> 
> Does you fix handle writing out as well? Sorry, too lazy to read the
> code! :)
> 
> On Fri, 2005-07-08 at 16:59 +0200, bugzilla@apache.org wrote:
> > DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUGĀ·
> > RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
> > <http://issues.apache.org/bugzilla/show_bug.cgi?id=35527>.
> > ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED ANDĀ·
> > INSERTED IN THE BUG DATABASE.
> > 
> > http://issues.apache.org/bugzilla/show_bug.cgi?id=35527
> > 
> > 
> > amolweb@yahoo.com changed:
> > 
> >            What    |Removed                     |Added
> > 
> --------------------------------------------------------------
> --------------
> >              Status|NEW                         |RESOLVED
> >          Resolution|                            |FIXED
> > 
> > 
> > 
> > 
> > ------- Additional Comments From amolweb@yahoo.com  
> 2005-07-08 16:59 -------
> > *** I thought i had resolved this issue as fixed  *** 
> > *** couple of days back, but my fix comments dont *** 
> > *** appear, so I'm adding these comments again    ***
> > 
> > 
> > Further "investigation" revealed that the byte array
> > was falling short 2 bytes when the sid of the SubRecord
> > indicated an EndSubRecord.
> > 
> > Hence,
> > I made a slight modification in the change I proposed
> > earlier in the file I committed. Here is the changed part:
> > 
> > <code>
> > 
> > while (pos - offset <= size-2) // atleast one "short" must 
> be present
> > {
> >   short subRecordSid = LittleEndian.getShort(data, pos);
> >   short subRecordSize = -1; // set default to "< 0"
> >   if (pos-offset <= size-4) { // see if size info is 
> present, else default to -1
> >     subRecordSize = LittleEndian.getShort(data, pos + 2);
> >   }
> > 
> > </code>
> > 
> > 
> > 
> > Now, when the byte array falls short two bytes when dealing with
> > EndSubRecord, the length is implicitly set to 0 since the change
> > in ObjRecord now sets the length to default value of -1 if the 
> > short value for the SubRecord size is not found.
> > 
> > 
> -- 
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: poi-dev-unsubscribe@jakarta.apache.org
> Mailing List:    http://jakarta.apache.org/site/mail2.html#poi
> The Apache Jakarta POI Project: http://jakarta.apache.org/poi/
> 

---------------------------------------------------------------------
To unsubscribe, e-mail: poi-dev-unsubscribe@jakarta.apache.org
Mailing List:    http://jakarta.apache.org/site/mail2.html#poi
The Apache Jakarta POI Project: http://jakarta.apache.org/poi/