You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@poi.apache.org by ta...@apache.org on 2017/03/23 18:08:52 UTC
svn commit: r1788295 - in
/poi/trunk/src/ooxml/java/org/apache/poi/xssf/binary: XSSFBCellHeader.java
XSSFBSharedStringsTable.java XSSFBSheetHandler.java
Author: tallison
Date: Thu Mar 23 18:08:52 2017
New Revision: 1788295
URL: http://svn.apache.org/viewvc?rev=1788295&view=rev
Log:
Bug 60906 -- clean up, and add range checking for casting to ints.
Modified:
poi/trunk/src/ooxml/java/org/apache/poi/xssf/binary/XSSFBCellHeader.java
poi/trunk/src/ooxml/java/org/apache/poi/xssf/binary/XSSFBSharedStringsTable.java
poi/trunk/src/ooxml/java/org/apache/poi/xssf/binary/XSSFBSheetHandler.java
Modified: poi/trunk/src/ooxml/java/org/apache/poi/xssf/binary/XSSFBCellHeader.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xssf/binary/XSSFBCellHeader.java?rev=1788295&r1=1788294&r2=1788295&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xssf/binary/XSSFBCellHeader.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xssf/binary/XSSFBCellHeader.java Thu Mar 23 18:08:52 2017
@@ -39,11 +39,11 @@ class XSSFBCellHeader {
* @param cell cell buffer to update
*/
public static void parse(byte[] data, int offset, int currentRow, XSSFBCellHeader cell) {
- long colNum = LittleEndian.getUInt(data, offset); offset += LittleEndian.INT_SIZE;
+ int colNum = XSSFBUtils.castToInt(LittleEndian.getUInt(data, offset)); offset += LittleEndian.INT_SIZE;
int styleIdx = XSSFBUtils.get24BitInt(data, offset); offset += 3;
//TODO: range checking
boolean showPhonetic = false;//TODO: fill this out
- cell.reset(currentRow, (int)colNum, styleIdx, showPhonetic);
+ cell.reset(currentRow, colNum, styleIdx, showPhonetic);
}
private int rowNum;
Modified: poi/trunk/src/ooxml/java/org/apache/poi/xssf/binary/XSSFBSharedStringsTable.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xssf/binary/XSSFBSharedStringsTable.java?rev=1788295&r1=1788294&r2=1788295&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xssf/binary/XSSFBSharedStringsTable.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xssf/binary/XSSFBSharedStringsTable.java Thu Mar 23 18:08:52 2017
@@ -133,8 +133,8 @@ public class XSSFBSharedStringsTable {
strings.add(rstr.getString());
break;
case BrtBeginSst:
- count = (int) LittleEndian.getUInt(data,0);
- uniqueCount = (int) LittleEndian.getUInt(data, 4);
+ count = XSSFBUtils.castToInt(LittleEndian.getUInt(data,0));
+ uniqueCount = XSSFBUtils.castToInt(LittleEndian.getUInt(data, 4));
break;
}
Modified: poi/trunk/src/ooxml/java/org/apache/poi/xssf/binary/XSSFBSheetHandler.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xssf/binary/XSSFBSheetHandler.java?rev=1788295&r1=1788294&r2=1788295&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xssf/binary/XSSFBSheetHandler.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xssf/binary/XSSFBSheetHandler.java Thu Mar 23 18:08:52 2017
@@ -74,11 +74,11 @@ public class XSSFBSheetHandler extends X
switch(type) {
case BrtRowHdr:
- long rw = LittleEndian.getUInt(data, 0);
- if (rw > 0x00100000L) {//could make sure this is larger than currentRow, according to spec?
+ int rw = XSSFBUtils.castToInt(LittleEndian.getUInt(data, 0));
+ if (rw > 0x00100000) {//could make sure this is larger than currentRow, according to spec?
throw new XSSFBParseException("Row number beyond allowable range: "+rw);
}
- currentRow = (int)rw;
+ currentRow = rw;
checkMissedComments(currentRow);
startRow(currentRow);
break;
@@ -142,9 +142,7 @@ public class XSSFBSheetHandler extends X
beforeCellValue(data);
//xNum
double val = LittleEndian.getDouble(data, XSSFBCellHeader.length);
- String formatString = styles.getNumberFormatString(cellBuffer.getStyleIdx());
- String formattedVal = dataFormatter.formatRawCellContents(val, cellBuffer.getStyleIdx(), formatString);
- handleCellValue(formattedVal);
+ handleCellValue(formatVal(val, cellBuffer.getStyleIdx()));
}
private void handleCellSt(byte[] data) {
@@ -183,26 +181,25 @@ public class XSSFBSheetHandler extends X
beforeCellValue(data);
//xNum
double val = LittleEndian.getDouble(data, XSSFBCellHeader.length);
- String formatString = styles.getNumberFormatString(cellBuffer.getStyleIdx());
- String formattedVal = dataFormatter.formatRawCellContents(val, cellBuffer.getStyleIdx(), formatString);
- handleCellValue(formattedVal);
+ handleCellValue(formatVal(val, cellBuffer.getStyleIdx()));
}
private void handleCellRk(byte[] data) {
beforeCellValue(data);
double val = rkNumber(data, XSSFBCellHeader.length);
- String formatString = styles.getNumberFormatString(cellBuffer.getStyleIdx());
- short styleIndex = styles.getNumberFormatIndex(cellBuffer.getStyleIdx());
- String formattedVal = dataFormatter.formatRawCellContents(val, styleIndex, formatString);
- handleCellValue(formattedVal);
+ handleCellValue(formatVal(val, cellBuffer.getStyleIdx()));
+ }
+
+ private String formatVal(double val, int styleIdx) {
+ String formatString = styles.getNumberFormatString(styleIdx);
+ short styleIndex = styles.getNumberFormatIndex(styleIdx);
+ return dataFormatter.formatRawCellContents(val, styleIndex, formatString);
}
private void handleBrtCellIsst(byte[] data) {
beforeCellValue(data);
- long idx = LittleEndian.getUInt(data, XSSFBCellHeader.length);
- //check for out of range, buffer overflow
-
- XSSFRichTextString rtss = new XSSFRichTextString(stringsTable.getEntryAt((int)idx));
+ int idx = XSSFBUtils.castToInt(LittleEndian.getUInt(data, XSSFBCellHeader.length));
+ XSSFRichTextString rtss = new XSSFRichTextString(stringsTable.getEntryAt(idx));
handleCellValue(rtss.getString());
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@poi.apache.org
For additional commands, e-mail: commits-help@poi.apache.org