From: Tim Allison Date: Tue, 22 Nov 2016 14:47:45 +0000 (+0000) Subject: bug 60343, return null if index is out of bounds in StylesTable's getStyleAt(idx) X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=52c449c65ab67b782e4da1257808e6a0931360a8;p=poi.git 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 --- diff --git a/src/ooxml/java/org/apache/poi/xssf/model/StylesTable.java b/src/ooxml/java/org/apache/poi/xssf/model/StylesTable.java index 18b88203f4..bc85de49d6 100644 --- a/src/ooxml/java/org/apache/poi/xssf/model/StylesTable.java +++ b/src/ooxml/java/org/apache/poi/xssf/model/StylesTable.java @@ -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(); diff --git a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFWorkbook.java b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFWorkbook.java index 7f832c4d9c..b6360a6bb1 100644 --- a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFWorkbook.java +++ b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFWorkbook.java @@ -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();