bug 60343, return null if index is out of bounds in StylesTable's getStyleAt(idx)

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1770848 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Tim Allison 2016-11-22 14:47:45 +00:00
parent ea63780926
commit 52c449c65a
2 changed files with 17 additions and 16 deletions

View File

@ -403,9 +403,18 @@ public class StylesTable extends POIXMLDocumentPart {
return putFont(font, false);
}
/**
*
* @param idx style index
* @return XSSFCellStyle or null if idx is out of bounds for xfs array
*/
public XSSFCellStyle getStyleAt(int idx) {
int styleXfId = 0;
if (idx < 0 || idx >= xfs.size()) {
//BUG-60343
return null;
}
// 0 is the empty default
if(xfs.get(idx).getXfId() > 0) {
styleXfId = (int) xfs.get(idx).getXfId();

View File

@ -463,10 +463,8 @@ public final class TestXSSFWorkbook extends BaseTestXWorkbook {
// Should have one style
assertEquals(1, wb1.getNumCellStyles());
wb1.getCellStyleAt((short)0);
try {
wb1.getCellStyleAt((short)1);
fail("Shouldn't be able to get style at 1 that doesn't exist");
} catch(IndexOutOfBoundsException e) {}
assertNull("Shouldn't be able to get style at 0 that doesn't exist",
wb1.getCellStyleAt((short)1));
// Add another one
CellStyle cs = wb1.createCellStyle();
@ -476,20 +474,16 @@ public final class TestXSSFWorkbook extends BaseTestXWorkbook {
assertEquals(2, wb1.getNumCellStyles());
wb1.getCellStyleAt((short)0);
wb1.getCellStyleAt((short)1);
try {
wb1.getCellStyleAt((short)2);
fail("Shouldn't be able to get style at 2 that doesn't exist");
} catch(IndexOutOfBoundsException e) {}
assertNull("Shouldn't be able to get style at 2 that doesn't exist",
wb1.getCellStyleAt((short)2));
// Save and reload
XSSFWorkbook nwb = XSSFTestDataSamples.writeOutAndReadBack(wb1);
assertEquals(2, nwb.getNumCellStyles());
nwb.getCellStyleAt((short)0);
nwb.getCellStyleAt((short)1);
try {
nwb.getCellStyleAt((short)2);
fail("Shouldn't be able to get style at 2 that doesn't exist");
} catch(IndexOutOfBoundsException e) {}
assertNull("Shouldn't be able to get style at 2 that doesn't exist",
nwb.getCellStyleAt((short)2));
// Now with an existing file
XSSFWorkbook wb2 = XSSFTestDataSamples.openSampleWorkbook("sample.xlsx");
@ -497,10 +491,8 @@ public final class TestXSSFWorkbook extends BaseTestXWorkbook {
wb2.getCellStyleAt((short)0);
wb2.getCellStyleAt((short)1);
wb2.getCellStyleAt((short)2);
try {
wb2.getCellStyleAt((short)3);
fail("Shouldn't be able to get style at 3 that doesn't exist");
} catch(IndexOutOfBoundsException e) {}
assertNull("Shouldn't be able to get style at 3 that doesn't exist",
wb2.getCellStyleAt((short)3));
wb2.close();
wb1.close();