Fix 47958 - ArrayIndexOutOfBoundsException from PicturesTable.getAllPictures() during Escher tree walk
Fix 50936 - Exception parsing MS Word 8.0 file (as duplicate of 47958) git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1195080 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
9883b370e2
commit
ec46537ca0
@ -34,6 +34,8 @@
|
||||
|
||||
<changes>
|
||||
<release version="3.8-beta5" date="2011-??-??">
|
||||
<action dev="poi-developers" type="fix">50936 - Exception parsing MS Word 8.0 file (as duplicate of 47958)</action>
|
||||
<action dev="poi-developers" type="fix">47958 - ArrayIndexOutOfBoundsException from PicturesTable.getAllPictures() during Escher tree walk</action>
|
||||
<action dev="poi-developers" type="fix">51944 - PAPFormattedDiskPage.getPAPX - IndexOutOfBounds</action>
|
||||
<action dev="poi-developers" type="fix">52032 - HWPF - ArrayIndexOutofBoundsException with no stack trace (broken after revision 1178063)</action>
|
||||
<action dev="poi-developers" type="add">support for converting pptx files into images with a PPTX2PNG tool</action>
|
||||
|
@ -20,6 +20,10 @@ package org.apache.poi.hwpf.model;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import org.apache.poi.util.POILogFactory;
|
||||
|
||||
import org.apache.poi.util.POILogger;
|
||||
|
||||
import org.apache.poi.ddf.DefaultEscherRecordFactory;
|
||||
import org.apache.poi.ddf.EscherBSERecord;
|
||||
import org.apache.poi.ddf.EscherBlipRecord;
|
||||
@ -52,6 +56,9 @@ import org.apache.poi.util.LittleEndian;
|
||||
@Internal
|
||||
public final class PicturesTable
|
||||
{
|
||||
private static final POILogger logger = POILogFactory
|
||||
.getLogger( PicturesTable.class );
|
||||
|
||||
static final int TYPE_IMAGE = 0x08;
|
||||
static final int TYPE_IMAGE_WORD2000 = 0x00;
|
||||
static final int TYPE_IMAGE_PASTED_FROM_CLIPBOARD = 0xA;
|
||||
@ -175,16 +182,30 @@ public final class PicturesTable
|
||||
{
|
||||
pictures.add(new Picture(blip.getPicturedata()));
|
||||
}
|
||||
else if (bse.getOffset() > 0)
|
||||
else if ( bse.getOffset() > 0 )
|
||||
{
|
||||
// Blip stored in delay stream, which in a word doc, is the main stream
|
||||
try
|
||||
{
|
||||
// Blip stored in delay stream, which in a word doc, is
|
||||
// the main stream
|
||||
EscherRecordFactory recordFactory = new DefaultEscherRecordFactory();
|
||||
EscherRecord record = recordFactory.createRecord(_mainStream, bse.getOffset());
|
||||
EscherRecord record = recordFactory.createRecord(
|
||||
_mainStream, bse.getOffset() );
|
||||
|
||||
if (record instanceof EscherBlipRecord) {
|
||||
record.fillFields(_mainStream, bse.getOffset(), recordFactory);
|
||||
if ( record instanceof EscherBlipRecord )
|
||||
{
|
||||
record.fillFields( _mainStream, bse.getOffset(),
|
||||
recordFactory );
|
||||
blip = (EscherBlipRecord) record;
|
||||
pictures.add(new Picture(blip.getPicturedata()));
|
||||
pictures.add( new Picture( blip.getPicturedata() ) );
|
||||
}
|
||||
}
|
||||
catch ( Exception exc )
|
||||
{
|
||||
logger.log(
|
||||
POILogger.WARN,
|
||||
"Unable to load picture from BLIB record at offset #",
|
||||
Integer.valueOf( bse.getOffset() ), exc );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -463,23 +463,12 @@ public class TestBugs extends TestCase
|
||||
}
|
||||
|
||||
/**
|
||||
* [FAILING] Bug 47958 - Exception during Escher walk of pictures
|
||||
* Bug 47958 - Exception during Escher walk of pictures
|
||||
*/
|
||||
public void test47958()
|
||||
{
|
||||
HWPFDocument doc = HWPFTestDataSamples.openSampleFile( "Bug47958.doc" );
|
||||
try
|
||||
{
|
||||
for ( Picture pic : doc.getPicturesTable().getAllPictures() )
|
||||
{
|
||||
System.out.println( pic.suggestFullFileName() );
|
||||
}
|
||||
fixed( "47958" );
|
||||
}
|
||||
catch ( Exception e )
|
||||
{
|
||||
// expected exception
|
||||
}
|
||||
doc.getPicturesTable().getAllPictures();
|
||||
}
|
||||
|
||||
/**
|
||||
@ -513,11 +502,33 @@ public class TestBugs extends TestCase
|
||||
}
|
||||
|
||||
/**
|
||||
* Bug 50936 - HWPF fails to read a file
|
||||
* Bug 50936 - Exception parsing MS Word 8.0 file
|
||||
*/
|
||||
public void test50936()
|
||||
public void test50936_1()
|
||||
{
|
||||
HWPFTestDataSamples.openSampleFile( "Bug50936.doc" );
|
||||
HWPFDocument hwpfDocument = HWPFTestDataSamples
|
||||
.openSampleFile( "Bug50936_1.doc" );
|
||||
hwpfDocument.getPicturesTable().getAllPictures();
|
||||
}
|
||||
|
||||
/**
|
||||
* Bug 50936 - Exception parsing MS Word 8.0 file
|
||||
*/
|
||||
public void test50936_2()
|
||||
{
|
||||
HWPFDocument hwpfDocument = HWPFTestDataSamples
|
||||
.openSampleFile( "Bug50936_2.doc" );
|
||||
hwpfDocument.getPicturesTable().getAllPictures();
|
||||
}
|
||||
|
||||
/**
|
||||
* Bug 50936 - Exception parsing MS Word 8.0 file
|
||||
*/
|
||||
public void test50936_3()
|
||||
{
|
||||
HWPFDocument hwpfDocument = HWPFTestDataSamples
|
||||
.openSampleFile( "Bug50936_3.doc" );
|
||||
hwpfDocument.getPicturesTable().getAllPictures();
|
||||
}
|
||||
|
||||
/**
|
||||
|
BIN
test-data/document/Bug50936_2.doc
Normal file
BIN
test-data/document/Bug50936_2.doc
Normal file
Binary file not shown.
BIN
test-data/document/Bug50936_3.doc
Normal file
BIN
test-data/document/Bug50936_3.doc
Normal file
Binary file not shown.
Loading…
Reference in New Issue
Block a user