Bug 61911: Avoid IndexOutOfBounds access when reading pictures

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1819403 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Dominik Stadler 2017-12-28 08:45:36 +00:00
parent 62c8296c70
commit 89e7fbe6cd
5 changed files with 40 additions and 13 deletions

View File

@ -68,13 +68,10 @@ public class RecordsStresser {
// a test-case to test this locally without executing the full TestAllFiles
@Test
public void test() throws Exception {
InputStream stream = new FileInputStream("test-data/spreadsheet/15556.xls");
try {
try (InputStream stream = new FileInputStream("test-data/spreadsheet/15556.xls")) {
HSSFWorkbook wb = new HSSFWorkbook(stream);
handleWorkbook(wb);
wb.close();
} finally {
stream.close();
}
}
}

View File

@ -21,9 +21,12 @@ import static org.junit.Assert.assertNotNull;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.List;
import org.apache.poi.hwpf.HWPFDocument;
import org.apache.poi.hwpf.extractor.WordExtractor;
import org.apache.poi.hwpf.model.PicturesTable;
import org.apache.poi.hwpf.usermodel.Picture;
import org.junit.Test;
public class HWPFFileHandler extends POIFSFileHandler {
@ -33,7 +36,11 @@ public class HWPFFileHandler extends POIFSFileHandler {
assertNotNull(doc.getBookmarks());
assertNotNull(doc.getCharacterTable());
assertNotNull(doc.getEndnotes());
PicturesTable picturesTable = doc.getPicturesTable();
List<Picture> pictures = picturesTable.getAllPictures();
assertNotNull(pictures);
handlePOIDocument(doc);
}
@ -54,11 +61,8 @@ public class HWPFFileHandler extends POIFSFileHandler {
stream = new FileInputStream(file);
try {
WordExtractor extractor = new WordExtractor(stream);
try {
try (WordExtractor extractor = new WordExtractor(stream)) {
assertNotNull(extractor.getText());
} finally {
extractor.close();
}
} finally {
stream.close();

View File

@ -304,6 +304,10 @@ public final class StyleSheet {
return NIL_CHP;
}
if (styleIndex == -1) {
return NIL_CHP;
}
return (_styleDescriptions[styleIndex] != null ? _styleDescriptions[styleIndex]
.getCHP() : NIL_CHP);
}
@ -318,6 +322,10 @@ public final class StyleSheet {
return NIL_PAP;
}
if (styleIndex == -1) {
return NIL_PAP;
}
if (_styleDescriptions[styleIndex] == null) {
return NIL_PAP;
}
@ -338,6 +346,10 @@ public final class StyleSheet {
return NIL_CHPX;
}
if (styleIndex == -1) {
return NIL_CHPX;
}
if (_styleDescriptions[styleIndex] == null) {
return NIL_CHPX;
}
@ -358,6 +370,10 @@ public final class StyleSheet {
return NIL_PAPX;
}
if (styleIndex == -1) {
return NIL_PAPX;
}
if (_styleDescriptions[styleIndex] == null) {
return NIL_PAPX;
}

View File

@ -38,10 +38,7 @@ import org.apache.poi.hwpf.converter.AbstractWordUtils;
import org.apache.poi.hwpf.converter.WordToTextConverter;
import org.apache.poi.hwpf.extractor.Word6Extractor;
import org.apache.poi.hwpf.extractor.WordExtractor;
import org.apache.poi.hwpf.model.FieldsDocumentPart;
import org.apache.poi.hwpf.model.FileInformationBlock;
import org.apache.poi.hwpf.model.PlexOfField;
import org.apache.poi.hwpf.model.SubdocumentType;
import org.apache.poi.hwpf.model.*;
import org.apache.poi.poifs.filesystem.NPOIFSFileSystem;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
import org.apache.poi.util.IOUtils;
@ -903,4 +900,17 @@ public class TestBugs{
HWPFDocument document = HWPFTestDataSamples.openSampleFile("ca.kwsymphony.www_education_School_Concert_Seat_Booking_Form_2011-12.doc");
document.close();
}
@Test
public void test61911() throws IOException {
HWPFDocument document = HWPFTestDataSamples.openSampleFile("61911.doc");
PicturesTable picturesTable = document.getPicturesTable();
List<Picture> pictures = picturesTable.getAllPictures();
assertNotNull(pictures);
assertEquals(0, pictures.size());
document.close();
}
}

Binary file not shown.