Browse Source

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
tags/REL_4_0_0_FINAL
Dominik Stadler 6 years ago
parent
commit
89e7fbe6cd

+ 1
- 4
src/integrationtest/org/apache/poi/hssf/usermodel/RecordsStresser.java 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();
}
}
}

+ 9
- 5
src/integrationtest/org/apache/poi/stress/HWPFFileHandler.java 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();

+ 16
- 0
src/scratchpad/src/org/apache/poi/hwpf/model/StyleSheet.java 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;
}

+ 14
- 4
src/scratchpad/testcases/org/apache/poi/hwpf/usermodel/TestBugs.java 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();

}
}

BIN
test-data/document/61911.doc View File


Loading…
Cancel
Save