]> source.dussan.org Git - poi.git/commitdiff
Don't fail on row-nums larger than Integer.MAX_VALUE, we had one sample
authorDominik Stadler <centic@apache.org>
Sun, 13 Jan 2019 17:14:31 +0000 (17:14 +0000)
committerDominik Stadler <centic@apache.org>
Sun, 13 Jan 2019 17:14:31 +0000 (17:14 +0000)
file which triggered this

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1851211 13f79535-47bb-0310-9956-ffa450edef68

src/java/org/apache/poi/ss/util/CellReference.java
src/testcases/org/apache/poi/ss/util/TestCellReference.java

index be2737a1c1d3eb7caaaa4d7ff258caead7e2c835..067cdeb512e9d4a16e72b77739050ef676a9f992 100644 (file)
@@ -350,8 +350,11 @@ public class CellReference {
      * @throws NumberFormatException if rowStr is not parseable as an integer
      */
     public static boolean isRowWithinRange(String rowStr, SpreadsheetVersion ssVersion) {
-        final int rowNum = Integer.parseInt(rowStr) - 1;
-        return isRowWithinRange(rowNum, ssVersion);
+        final long rowNum = Long.parseLong(rowStr) - 1;
+        if(rowNum > Integer.MAX_VALUE) {
+            return false;
+        }
+        return isRowWithinRange((int)rowNum, ssVersion);
     }
 
     /**
index c2f7dfa87a1f5c31bec908c1413b547f78def087..686f2b40cea4aed286223336f7dd41d865d4f806 100644 (file)
@@ -399,10 +399,10 @@ public final class TestCellReference {
         assertFalse("1 beyond last row", CellReference.isRowWithinRange(1048576, ss));
     }
 
-    @Test(expected=NumberFormatException.class)
+    @Test
     public void isRowWithinRangeNonInteger_BigNumber() {
         String rowNum = "4000000000";
-        CellReference.isRowWithinRange(rowNum, SpreadsheetVersion.EXCEL2007);
+        assertFalse(CellReference.isRowWithinRange(rowNum, SpreadsheetVersion.EXCEL2007));
     }
     
     @Test(expected=NumberFormatException.class)