Author: fanningpj
Date: Sat Oct 23 21:13:08 2021
New Revision: 1894516
URL: http://svn.apache.org/viewvc?rev=1894516&view=rev
Log:
configurable max record len
Modified:
poi/trunk/poi/src/main/java/org/apache/poi/hpsf/Section.java
poi/trunk/poi/src/main/java/org/apache/poi/hpsf/UnicodeString.java
poi/trunk/poi/src/main/java/org/apache/poi/hpsf/VariantSupport.java
poi/trunk/poi/src/main/java/org/apache/poi/hssf/extractor/OldExcelExtractor.java
poi/trunk/poi/src/main/java/org/apache/poi/hssf/record/CFRule12Record.java
poi/trunk/poi/src/main/java/org/apache/poi/hssf/record/DConRefRecord.java
poi/trunk/poi/src/main/java/org/apache/poi/hssf/record/EmbeddedObjectRefSubRecord.java
poi/trunk/poi/src/main/java/org/apache/poi/hssf/record/GroupMarkerSubRecord.java
poi/trunk/poi/src/main/java/org/apache/poi/hssf/record/HyperlinkRecord.java
poi/trunk/poi/src/main/java/org/apache/poi/hssf/record/OldLabelRecord.java
poi/trunk/poi/src/main/java/org/apache/poi/hssf/record/OldSheetRecord.java
poi/trunk/poi/src/main/java/org/apache/poi/hssf/record/OldStringRecord.java
poi/trunk/poi/src/main/java/org/apache/poi/hssf/record/RecordInputStream.java
poi/trunk/poi/src/main/java/org/apache/poi/hssf/record/common/ExtRst.java
poi/trunk/poi/src/main/java/org/apache/poi/hssf/record/crypto/Biff8DecryptingStream.java
poi/trunk/poi/src/main/java/org/apache/poi/poifs/dev/POIFSDump.java
poi/trunk/poi/src/main/java/org/apache/poi/poifs/filesystem/POIFSDocument.java
poi/trunk/poi/src/main/java/org/apache/poi/poifs/filesystem/POIFSFileSystem.java
poi/trunk/poi/src/main/java/org/apache/poi/poifs/property/PropertyTable.java
poi/trunk/poi/src/main/java/org/apache/poi/poifs/storage/HeaderBlock.java
Modified: poi/trunk/poi/src/main/java/org/apache/poi/hpsf/Section.java
URL:
http://svn.apache.org/viewvc/poi/trunk/poi/src/main/java/org/apache/poi/hpsf/Section.java?rev=1894516&r1=1894515&r2=1894516&view=diff
==============================================================================
--- poi/trunk/poi/src/main/java/org/apache/poi/hpsf/Section.java (original)
+++ poi/trunk/poi/src/main/java/org/apache/poi/hpsf/Section.java Sat Oct 23
21:13:08 2021
@@ -45,8 +45,6 @@ import org.apache.poi.util.LittleEndianO
* Represents a section in a {@link PropertySet}.
*/
public class Section {
- //arbitrarily selected; may need to increase
- private static final int MAX_RECORD_LENGTH = 100_000;
private static final Logger LOG = LogManager.getLogger(Section.class);
@@ -830,7 +828,7 @@ public class Section {
}
try {
- byte[] buf = IOUtils.safelyAllocate(nrBytes,
MAX_RECORD_LENGTH);
+ byte[] buf = IOUtils.safelyAllocate(nrBytes,
CodePageString.getMaxRecordLength());
leis.readFully(buf, 0, nrBytes);
final String str = CodePageUtil.getStringFromCodePage(buf, 0,
nrBytes, cp);
Modified: poi/trunk/poi/src/main/java/org/apache/poi/hpsf/UnicodeString.java
URL:
http://svn.apache.org/viewvc/poi/trunk/poi/src/main/java/org/apache/poi/hpsf/UnicodeString.java?rev=1894516&r1=1894515&r2=1894516&view=diff
==============================================================================
--- poi/trunk/poi/src/main/java/org/apache/poi/hpsf/UnicodeString.java
(original)
+++ poi/trunk/poi/src/main/java/org/apache/poi/hpsf/UnicodeString.java Sat Oct
23 21:13:08 2021
@@ -33,15 +33,13 @@ import org.apache.poi.util.StringUtil;
@Internal
public class UnicodeString {
private static final Logger LOG =
LogManager.getLogger(UnicodeString.class);
- //arbitrarily selected; may need to increase
- private static final int MAX_RECORD_LENGTH = 100_000;
private byte[] _value;
public void read(LittleEndianByteArrayInputStream lei) {
final int length = lei.readInt();
final int unicodeBytes = length*2;
- _value = IOUtils.safelyAllocate(unicodeBytes, MAX_RECORD_LENGTH);
+ _value = IOUtils.safelyAllocate(unicodeBytes,
CodePageString.getMaxRecordLength());
// If Length is zero, this field MUST be zero bytes in length. If
Length is
// nonzero, this field MUST be a null-terminated array of 16-bit
Unicode characters, followed by
Modified: poi/trunk/poi/src/main/java/org/apache/poi/hpsf/VariantSupport.java
URL:
http://svn.apache.org/viewvc/poi/trunk/poi/src/main/java/org/apache/poi/hpsf/VariantSupport.java?rev=1894516&r1=1894515&r2=1894516&view=diff
==============================================================================
--- poi/trunk/poi/src/main/java/org/apache/poi/hpsf/VariantSupport.java
(original)
+++ poi/trunk/poi/src/main/java/org/apache/poi/hpsf/VariantSupport.java Sat Oct
23 21:13:08 2021
@@ -59,8 +59,6 @@ public class VariantSupport extends Vari
private static final Logger LOG =
LogManager.getLogger(VariantSupport.class);
- //arbitrarily selected; may need to increase
- private static final int MAX_RECORD_LENGTH = 100_000;
private static boolean logUnsupportedTypes;
@@ -176,7 +174,7 @@ public class VariantSupport extends Vari
typedPropertyValue.readValue(lei);
} catch ( UnsupportedOperationException exc ) {
try {
- final byte[] v = IOUtils.toByteArray(lei, length,
MAX_RECORD_LENGTH);
+ final byte[] v = IOUtils.toByteArray(lei, length,
CodePageString.getMaxRecordLength());
throw new ReadingNotSupportedException( type, v );
} catch (IOException e) {
throw new RuntimeException(e);
@@ -254,7 +252,7 @@ public class VariantSupport extends Vari
default:
final int unpadded = lei.getReadIndex()-offset;
lei.setReadIndex(offset);
- final byte[] v = IOUtils.safelyAllocate(unpadded,
MAX_RECORD_LENGTH);
+ final byte[] v = IOUtils.safelyAllocate(unpadded,
CodePageString.getMaxRecordLength());
lei.readFully( v, 0, unpadded );
throw new ReadingNotSupportedException( type, v );
}
Modified:
poi/trunk/poi/src/main/java/org/apache/poi/hssf/extractor/OldExcelExtractor.java
URL:
http://svn.apache.org/viewvc/poi/trunk/poi/src/main/java/org/apache/poi/hssf/extractor/OldExcelExtractor.java?rev=1894516&r1=1894515&r2=1894516&view=diff
==============================================================================
---
poi/trunk/poi/src/main/java/org/apache/poi/hssf/extractor/OldExcelExtractor.java
(original)
+++
poi/trunk/poi/src/main/java/org/apache/poi/hssf/extractor/OldExcelExtractor.java
Sat Oct 23 21:13:08 2021
@@ -41,6 +41,7 @@ import org.apache.poi.hssf.record.OldShe
import org.apache.poi.hssf.record.OldStringRecord;
import org.apache.poi.hssf.record.RKRecord;
import org.apache.poi.hssf.record.RecordInputStream;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.poifs.filesystem.DirectoryNode;
import org.apache.poi.poifs.filesystem.DocumentNode;
import org.apache.poi.poifs.filesystem.FileMagic;
@@ -62,9 +63,6 @@ import org.apache.poi.util.IOUtils;
public class OldExcelExtractor implements POITextExtractor {
private static final int FILE_PASS_RECORD_SID = 0x2f;
- //arbitrarily selected; may need to increase
- private static final int DEFAULT_MAX_RECORD_LENGTH = 100_000;
- private static int MAX_RECORD_LENGTH = DEFAULT_MAX_RECORD_LENGTH;
private RecordInputStream ris;
@@ -74,20 +72,6 @@ public class OldExcelExtractor implement
private int biffVersion;
private int fileType;
- /**
- * @param length the max record length allowed for OldExcelExtractor
- */
- public static void setMaxRecordLength(int length) {
- MAX_RECORD_LENGTH = length;
- }
-
- /**
- * @return the max record length allowed for OldExcelExtractor
- */
- public static int getMaxRecordLength() {
- return MAX_RECORD_LENGTH;
- }
-
public OldExcelExtractor(InputStream input) throws IOException {
open(input);
}
@@ -316,7 +300,7 @@ public class OldExcelExtractor implement
break;
default:
- ris.readFully(IOUtils.safelyAllocate(ris.remaining(),
MAX_RECORD_LENGTH));
+ ris.readFully(IOUtils.safelyAllocate(ris.remaining(),
HSSFWorkbook.getMaxRecordLength()));
}
}
Modified:
poi/trunk/poi/src/main/java/org/apache/poi/hssf/record/CFRule12Record.java
URL:
http://svn.apache.org/viewvc/poi/trunk/poi/src/main/java/org/apache/poi/hssf/record/CFRule12Record.java?rev=1894516&r1=1894515&r2=1894516&view=diff
==============================================================================
--- poi/trunk/poi/src/main/java/org/apache/poi/hssf/record/CFRule12Record.java
(original)
+++ poi/trunk/poi/src/main/java/org/apache/poi/hssf/record/CFRule12Record.java
Sat Oct 23 21:13:08 2021
@@ -42,6 +42,7 @@ import org.apache.poi.util.IOUtils;
import org.apache.poi.util.LittleEndianOutput;
import static org.apache.logging.log4j.util.Unbox.box;
+import static org.apache.poi.hssf.usermodel.HSSFWorkbook.getMaxRecordLength;
/**
* Conditional Formatting v12 Rule Record (0x087A).
@@ -55,9 +56,6 @@ import static org.apache.logging.log4j.u
*/
public final class CFRule12Record extends CFRuleBase implements FutureRecord {
- //arbitrarily selected; may need to increase
- private static final int MAX_RECORD_LENGTH = 100_000;
-
public static final short sid = 0x087A;
private FtrHeader futureHeader;
@@ -123,7 +121,7 @@ public final class CFRule12Record extend
priority = 0;
template_type = getConditionType();
template_param_length = 16;
- template_params = IOUtils.safelyAllocate(template_param_length,
MAX_RECORD_LENGTH);
+ template_params = IOUtils.safelyAllocate(template_param_length,
getMaxRecordLength());
}
/**
@@ -267,7 +265,7 @@ public final class CFRule12Record extend
} else {
long len = readFormatOptions(in);
if (len < ext_formatting_length) {
- ext_formatting_data =
IOUtils.safelyAllocate(ext_formatting_length-len, MAX_RECORD_LENGTH);
+ ext_formatting_data =
IOUtils.safelyAllocate(ext_formatting_length-len, getMaxRecordLength());
in.readFully(ext_formatting_data);
}
}
@@ -283,7 +281,7 @@ public final class CFRule12Record extend
template_type = in.readUShort();
template_param_length = in.readByte();
if (template_param_length == 0 || template_param_length == 16) {
- template_params = IOUtils.safelyAllocate(template_param_length,
MAX_RECORD_LENGTH);
+ template_params = IOUtils.safelyAllocate(template_param_length,
getMaxRecordLength());
in.readFully(template_params);
} else {
LOG.atWarn().log("CF Rule v12 template params length should be 0
or 16, found {}", box(template_param_length));
Modified:
poi/trunk/poi/src/main/java/org/apache/poi/hssf/record/DConRefRecord.java
URL:
http://svn.apache.org/viewvc/poi/trunk/poi/src/main/java/org/apache/poi/hssf/record/DConRefRecord.java?rev=1894516&r1=1894515&r2=1894516&view=diff
==============================================================================
--- poi/trunk/poi/src/main/java/org/apache/poi/hssf/record/DConRefRecord.java
(original)
+++ poi/trunk/poi/src/main/java/org/apache/poi/hssf/record/DConRefRecord.java
Sat Oct 23 21:13:08 2021
@@ -23,6 +23,7 @@ import java.util.Map;
import java.util.function.Supplier;
import org.apache.commons.io.input.UnsynchronizedByteArrayInputStream;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.util.GenericRecordUtil;
import org.apache.poi.util.IOUtils;
import org.apache.poi.util.LittleEndianOutput;
@@ -72,9 +73,6 @@ import org.apache.poi.util.StringUtil;
*/
public class DConRefRecord extends StandardRecord {
- //arbitrarily selected; may need to increase
- private static final int MAX_RECORD_LENGTH = 100_000;
-
/**
* The id of the record type,
* <code>sid = {@value}</code>
@@ -158,7 +156,7 @@ public class DConRefRecord extends Stand
// single-byte, 1 if double-byte.
final int byteLength = charCount * (charType + 1);
- path = IOUtils.safelyAllocate(byteLength, MAX_RECORD_LENGTH);
+ path = IOUtils.safelyAllocate(byteLength,
HSSFWorkbook.getMaxRecordLength());
inStream.readFully(path);
// If it's a self reference, the last one or two bytes (depending on
char type) are the
Modified:
poi/trunk/poi/src/main/java/org/apache/poi/hssf/record/EmbeddedObjectRefSubRecord.java
URL:
http://svn.apache.org/viewvc/poi/trunk/poi/src/main/java/org/apache/poi/hssf/record/EmbeddedObjectRefSubRecord.java?rev=1894516&r1=1894515&r2=1894516&view=diff
==============================================================================
---
poi/trunk/poi/src/main/java/org/apache/poi/hssf/record/EmbeddedObjectRefSubRecord.java
(original)
+++
poi/trunk/poi/src/main/java/org/apache/poi/hssf/record/EmbeddedObjectRefSubRecord.java
Sat Oct 23 21:13:08 2021
@@ -24,6 +24,7 @@ import java.util.function.Supplier;
import org.apache.commons.io.input.UnsynchronizedByteArrayInputStream;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.formula.ptg.Area3DPtg;
import org.apache.poi.ss.formula.ptg.AreaPtg;
import org.apache.poi.ss.formula.ptg.Ptg;
@@ -47,8 +48,6 @@ import static org.apache.logging.log4j.u
*/
public final class EmbeddedObjectRefSubRecord extends SubRecord {
private static final Logger LOG =
LogManager.getLogger(EmbeddedObjectRefSubRecord.class);
- //arbitrarily selected; may need to increase
- private static final int MAX_RECORD_LENGTH = 100_000;
public static final short sid = 0x0009;
@@ -202,7 +201,7 @@ public final class EmbeddedObjectRefSubR
if (size == 0) {
return EMPTY_BYTE_ARRAY;
}
- byte[] result = IOUtils.safelyAllocate(size, MAX_RECORD_LENGTH);
+ byte[] result = IOUtils.safelyAllocate(size,
HSSFWorkbook.getMaxRecordLength());
in.readFully(result);
return result;
}
Modified:
poi/trunk/poi/src/main/java/org/apache/poi/hssf/record/GroupMarkerSubRecord.java
URL:
http://svn.apache.org/viewvc/poi/trunk/poi/src/main/java/org/apache/poi/hssf/record/GroupMarkerSubRecord.java?rev=1894516&r1=1894515&r2=1894516&view=diff
==============================================================================
---
poi/trunk/poi/src/main/java/org/apache/poi/hssf/record/GroupMarkerSubRecord.java
(original)
+++
poi/trunk/poi/src/main/java/org/apache/poi/hssf/record/GroupMarkerSubRecord.java
Sat Oct 23 21:13:08 2021
@@ -20,6 +20,7 @@ package org.apache.poi.hssf.record;
import java.util.Map;
import java.util.function.Supplier;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.util.GenericRecordUtil;
import org.apache.poi.util.IOUtils;
import org.apache.poi.util.LittleEndianInput;
@@ -31,9 +32,6 @@ import org.apache.poi.util.LittleEndianO
*/
public final class GroupMarkerSubRecord extends SubRecord {
public static final short sid = 0x0006;
- //arbitrarily selected; may need to increase
- private static final int MAX_RECORD_LENGTH = 100_000;
-
private static final byte[] EMPTY_BYTE_ARRAY = { };
@@ -54,7 +52,7 @@ public final class GroupMarkerSubRecord
}
GroupMarkerSubRecord(LittleEndianInput in, int size, int cmoOt) {
- byte[] buf = IOUtils.safelyAllocate(size, MAX_RECORD_LENGTH);
+ byte[] buf = IOUtils.safelyAllocate(size,
HSSFWorkbook.getMaxRecordLength());
in.readFully(buf);
reserved = buf;
}
Modified:
poi/trunk/poi/src/main/java/org/apache/poi/hssf/record/HyperlinkRecord.java
URL:
http://svn.apache.org/viewvc/poi/trunk/poi/src/main/java/org/apache/poi/hssf/record/HyperlinkRecord.java?rev=1894516&r1=1894515&r2=1894516&view=diff
==============================================================================
--- poi/trunk/poi/src/main/java/org/apache/poi/hssf/record/HyperlinkRecord.java
(original)
+++ poi/trunk/poi/src/main/java/org/apache/poi/hssf/record/HyperlinkRecord.java
Sat Oct 23 21:13:08 2021
@@ -31,6 +31,7 @@ import org.apache.logging.log4j.LogManag
import org.apache.logging.log4j.Logger;
import org.apache.poi.hpsf.ClassID;
import org.apache.poi.hpsf.ClassIDPredefined;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.util.CellRangeAddress;
import org.apache.poi.util.GenericRecordUtil;
import org.apache.poi.util.HexRead;
@@ -48,9 +49,6 @@ import org.apache.poi.util.StringUtil;
public final class HyperlinkRecord extends StandardRecord {
public static final short sid = 0x01B8;
private static final Logger LOG =
LogManager.getLogger(HyperlinkRecord.class);
- //arbitrarily selected; may need to increase
- private static final int MAX_RECORD_LENGTH = 100_000;
-
/*
* Link flags
@@ -391,7 +389,7 @@ public final class HyperlinkRecord exten
int len = in.readInt();
- byte[] path_bytes = IOUtils.safelyAllocate(len,
MAX_RECORD_LENGTH);
+ byte[] path_bytes = IOUtils.safelyAllocate(len,
HSSFWorkbook.getMaxRecordLength());
in.readFully(path_bytes);
_address = new String(path_bytes, StringUtil.UTF8);
Modified:
poi/trunk/poi/src/main/java/org/apache/poi/hssf/record/OldLabelRecord.java
URL:
http://svn.apache.org/viewvc/poi/trunk/poi/src/main/java/org/apache/poi/hssf/record/OldLabelRecord.java?rev=1894516&r1=1894515&r2=1894516&view=diff
==============================================================================
--- poi/trunk/poi/src/main/java/org/apache/poi/hssf/record/OldLabelRecord.java
(original)
+++ poi/trunk/poi/src/main/java/org/apache/poi/hssf/record/OldLabelRecord.java
Sat Oct 23 21:13:08 2021
@@ -22,6 +22,7 @@ import java.util.function.Supplier;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.util.GenericRecordUtil;
import org.apache.poi.util.IOUtils;
import org.apache.poi.util.RecordFormatException;
@@ -36,8 +37,6 @@ import static org.apache.poi.util.HexDum
*/
public final class OldLabelRecord extends OldCellRecord {
private static final Logger LOG =
LogManager.getLogger(OldLabelRecord.class);
- //arbitrarily set, may need to increase
- private static final int MAX_RECORD_LENGTH = 100_000;
public static final short biff2_sid = 0x0004;
public static final short biff345_sid = 0x0204;
@@ -60,7 +59,7 @@ public final class OldLabelRecord extend
}
// Can only decode properly later when you know the codepage
- field_5_bytes = IOUtils.safelyAllocate(field_4_string_len,
MAX_RECORD_LENGTH);
+ field_5_bytes = IOUtils.safelyAllocate(field_4_string_len,
HSSFWorkbook.getMaxRecordLength());
in.read(field_5_bytes, 0, field_4_string_len);
if (in.remaining() > 0) {
Modified:
poi/trunk/poi/src/main/java/org/apache/poi/hssf/record/OldSheetRecord.java
URL:
http://svn.apache.org/viewvc/poi/trunk/poi/src/main/java/org/apache/poi/hssf/record/OldSheetRecord.java?rev=1894516&r1=1894515&r2=1894516&view=diff
==============================================================================
--- poi/trunk/poi/src/main/java/org/apache/poi/hssf/record/OldSheetRecord.java
(original)
+++ poi/trunk/poi/src/main/java/org/apache/poi/hssf/record/OldSheetRecord.java
Sat Oct 23 21:13:08 2021
@@ -22,6 +22,7 @@ import java.util.Map;
import java.util.function.Supplier;
import org.apache.poi.common.usermodel.GenericRecord;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.util.GenericRecordJsonWriter;
import org.apache.poi.util.GenericRecordUtil;
import org.apache.poi.util.IOUtils;
@@ -35,9 +36,6 @@ import org.apache.poi.util.RecordFormatE
*/
public final class OldSheetRecord implements GenericRecord {
- //arbitrarily selected; may need to increase
- private static final int MAX_RECORD_LENGTH = 100_000;
-
public static final short sid = 0x0085;
private final int field_1_position_of_BOF;
@@ -64,7 +62,7 @@ public final class OldSheetRecord implem
}
}
}
- field_5_sheetname = IOUtils.safelyAllocate(field_4_sheetname_length,
MAX_RECORD_LENGTH);
+ field_5_sheetname = IOUtils.safelyAllocate(field_4_sheetname_length,
HSSFWorkbook.getMaxRecordLength());
in.read(field_5_sheetname, 0, field_4_sheetname_length);
}
Modified:
poi/trunk/poi/src/main/java/org/apache/poi/hssf/record/OldStringRecord.java
URL:
http://svn.apache.org/viewvc/poi/trunk/poi/src/main/java/org/apache/poi/hssf/record/OldStringRecord.java?rev=1894516&r1=1894515&r2=1894516&view=diff
==============================================================================
--- poi/trunk/poi/src/main/java/org/apache/poi/hssf/record/OldStringRecord.java
(original)
+++ poi/trunk/poi/src/main/java/org/apache/poi/hssf/record/OldStringRecord.java
Sat Oct 23 21:13:08 2021
@@ -23,6 +23,7 @@ import java.util.function.Supplier;
import org.apache.poi.common.usermodel.GenericRecord;
import org.apache.poi.hpsf.Property;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.util.CodePageUtil;
import org.apache.poi.util.GenericRecordJsonWriter;
import org.apache.poi.util.GenericRecordUtil;
@@ -35,9 +36,6 @@ import org.apache.poi.util.IOUtils;
*/
public final class OldStringRecord implements GenericRecord {
- //arbitrarily selected; may need to increase
- private static final int MAX_RECORD_LENGTH = 100_000;
-
public static final short biff2_sid = 0x0007;
public static final short biff345_sid = 0x0207;
@@ -59,7 +57,7 @@ public final class OldStringRecord imple
}
// Can only decode properly later when you know the codepage
- field_2_bytes = IOUtils.safelyAllocate(field_1_string_len,
MAX_RECORD_LENGTH);
+ field_2_bytes = IOUtils.safelyAllocate(field_1_string_len,
HSSFWorkbook.getMaxRecordLength());
in.read(field_2_bytes, 0, field_1_string_len);
}
Modified:
poi/trunk/poi/src/main/java/org/apache/poi/hssf/record/RecordInputStream.java
URL:
http://svn.apache.org/viewvc/poi/trunk/poi/src/main/java/org/apache/poi/hssf/record/RecordInputStream.java?rev=1894516&r1=1894515&r2=1894516&view=diff
==============================================================================
---
poi/trunk/poi/src/main/java/org/apache/poi/hssf/record/RecordInputStream.java
(original)
+++
poi/trunk/poi/src/main/java/org/apache/poi/hssf/record/RecordInputStream.java
Sat Oct 23 21:13:08 2021
@@ -24,6 +24,7 @@ import java.util.Locale;
import org.apache.commons.io.output.UnsynchronizedByteArrayOutputStream;
import org.apache.poi.hssf.dev.BiffViewer;
import org.apache.poi.hssf.record.crypto.Biff8DecryptingStream;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.poifs.crypt.EncryptionInfo;
import org.apache.poi.util.IOUtils;
import org.apache.poi.util.Internal;
@@ -39,12 +40,10 @@ import org.apache.poi.util.RecordFormatE
*/
public final class RecordInputStream implements LittleEndianInput {
-
/** Maximum size of a single record (minus the 4 byte header) without a
continue*/
public static final short MAX_RECORD_DATA_SIZE = 8224;
private static final int INVALID_SID_VALUE = -1;
- //arbitrarily selected; may need to increase
- private static final int MAX_RECORD_LENGTH = 100_000;
+
/**
* When {@link #_currentDataLength} has this value, it means that the
previous BIFF record is
* finished, the next sid has been properly read, but the data size field
has not been read yet.
@@ -442,7 +441,7 @@ public final class RecordInputStream imp
if (size ==0) {
return EMPTY_BYTE_ARRAY;
}
- byte[] result = IOUtils.safelyAllocate(size, MAX_RECORD_LENGTH);
+ byte[] result = IOUtils.safelyAllocate(size,
HSSFWorkbook.getMaxRecordLength());
readFully(result);
return result;
}
Modified:
poi/trunk/poi/src/main/java/org/apache/poi/hssf/record/common/ExtRst.java
URL:
http://svn.apache.org/viewvc/poi/trunk/poi/src/main/java/org/apache/poi/hssf/record/common/ExtRst.java?rev=1894516&r1=1894515&r2=1894516&view=diff
==============================================================================
--- poi/trunk/poi/src/main/java/org/apache/poi/hssf/record/common/ExtRst.java
(original)
+++ poi/trunk/poi/src/main/java/org/apache/poi/hssf/record/common/ExtRst.java
Sat Oct 23 21:13:08 2021
@@ -26,6 +26,7 @@ import org.apache.logging.log4j.LogManag
import org.apache.logging.log4j.Logger;
import org.apache.poi.common.usermodel.GenericRecord;
import org.apache.poi.hssf.record.cont.ContinuableRecordOutput;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.util.GenericRecordUtil;
import org.apache.poi.util.IOUtils;
import org.apache.poi.util.Internal;
@@ -37,8 +38,6 @@ import static org.apache.logging.log4j.u
@Internal
public class ExtRst implements Comparable<ExtRst>, GenericRecord {
private static final Logger LOG = LogManager.getLogger(ExtRst.class);
- //arbitrarily selected; may need to increase
- private static final int MAX_RECORD_LENGTH = 100_000;
private short reserved;
@@ -126,7 +125,7 @@ public class ExtRst implements Comparabl
LOG.atWarn().log("ExtRst overran by {} bytes",
box(-extraDataLength));
extraDataLength = 0;
}
- extraData = IOUtils.safelyAllocate(extraDataLength, MAX_RECORD_LENGTH);
+ extraData = IOUtils.safelyAllocate(extraDataLength,
HSSFWorkbook.getMaxRecordLength());
for(int i=0; i<extraData.length; i++) {
extraData[i] = in.readByte();
}
Modified:
poi/trunk/poi/src/main/java/org/apache/poi/hssf/record/crypto/Biff8DecryptingStream.java
URL:
http://svn.apache.org/viewvc/poi/trunk/poi/src/main/java/org/apache/poi/hssf/record/crypto/Biff8DecryptingStream.java?rev=1894516&r1=1894515&r2=1894516&view=diff
==============================================================================
---
poi/trunk/poi/src/main/java/org/apache/poi/hssf/record/crypto/Biff8DecryptingStream.java
(original)
+++
poi/trunk/poi/src/main/java/org/apache/poi/hssf/record/crypto/Biff8DecryptingStream.java
Sat Oct 23 21:13:08 2021
@@ -20,10 +20,8 @@ package org.apache.poi.hssf.record.crypt
import java.io.InputStream;
import java.io.PushbackInputStream;
-import org.apache.poi.hssf.record.BOFRecord;
-import org.apache.poi.hssf.record.BiffHeaderInput;
-import org.apache.poi.hssf.record.FilePassRecord;
-import org.apache.poi.hssf.record.InterfaceHdrRecord;
+import org.apache.poi.hssf.record.*;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.poifs.crypt.ChunkedCipherInputStream;
import org.apache.poi.poifs.crypt.Decryptor;
import org.apache.poi.poifs.crypt.EncryptionInfo;
@@ -37,31 +35,15 @@ import org.apache.poi.util.SuppressForbi
public final class Biff8DecryptingStream implements BiffHeaderInput,
LittleEndianInput {
public static final int RC4_REKEYING_INTERVAL = 1024;
- //arbitrarily selected; may need to increase
- private static final int DEFAULT_MAX_RECORD_LENGTH = 100_000;
- private static int MAX_RECORD_LENGTH = DEFAULT_MAX_RECORD_LENGTH;
+
private final ChunkedCipherInputStream ccis;
private final byte[] buffer = new byte[LittleEndianConsts.LONG_SIZE];
private boolean shouldSkipEncryptionOnCurrentRecord;
- /**
- * @param length the max record length allowed for Biff8DecryptingStream
- */
- public static void setMaxRecordLength(int length) {
- MAX_RECORD_LENGTH = length;
- }
-
- /**
- * @return the max record length allowed for Biff8DecryptingStream
- */
- public static int getMaxRecordLength() {
- return MAX_RECORD_LENGTH;
- }
-
public Biff8DecryptingStream(InputStream in, int initialOffset,
EncryptionInfo info) throws RecordFormatException {
try {
- byte[] initialBuf = IOUtils.safelyAllocate(initialOffset,
MAX_RECORD_LENGTH);
+ byte[] initialBuf = IOUtils.safelyAllocate(initialOffset,
HSSFWorkbook.getMaxRecordLength());
InputStream stream;
if (initialOffset == 0) {
stream = in;
Modified: poi/trunk/poi/src/main/java/org/apache/poi/poifs/dev/POIFSDump.java
URL:
http://svn.apache.org/viewvc/poi/trunk/poi/src/main/java/org/apache/poi/poifs/dev/POIFSDump.java?rev=1894516&r1=1894515&r2=1894516&view=diff
==============================================================================
--- poi/trunk/poi/src/main/java/org/apache/poi/poifs/dev/POIFSDump.java
(original)
+++ poi/trunk/poi/src/main/java/org/apache/poi/poifs/dev/POIFSDump.java Sat Oct
23 21:13:08 2021
@@ -39,8 +39,6 @@ import org.apache.poi.util.IOUtils;
* Dump internal structure of a OLE2 file into file system
*/
public final class POIFSDump {
- //arbitrarily selected; may need to increase
- private static final int MAX_RECORD_LENGTH = 100_000;
private POIFSDump() {}
@@ -125,7 +123,7 @@ public final class POIFSDump {
try (FileOutputStream out = new FileOutputStream(file)) {
POIFSStream stream = new POIFSStream(fs, startBlock);
- byte[] b = IOUtils.safelyAllocate(fs.getBigBlockSize(),
MAX_RECORD_LENGTH);
+ byte[] b = IOUtils.safelyAllocate(fs.getBigBlockSize(),
POIFSFileSystem.getMaxRecordLength());
for (ByteBuffer bb : stream) {
int len = bb.remaining();
bb.get(b);
Modified:
poi/trunk/poi/src/main/java/org/apache/poi/poifs/filesystem/POIFSDocument.java
URL:
http://svn.apache.org/viewvc/poi/trunk/poi/src/main/java/org/apache/poi/poifs/filesystem/POIFSDocument.java?rev=1894516&r1=1894515&r2=1894516&view=diff
==============================================================================
---
poi/trunk/poi/src/main/java/org/apache/poi/poifs/filesystem/POIFSDocument.java
(original)
+++
poi/trunk/poi/src/main/java/org/apache/poi/poifs/filesystem/POIFSDocument.java
Sat Oct 23 21:13:08 2021
@@ -143,7 +143,7 @@ public final class POIFSDocument impleme
int usedInBlock = (int) (length % _block_size);
if (usedInBlock != 0 && usedInBlock != _block_size) {
int toBlockEnd = _block_size - usedInBlock;
- byte[] padding = IOUtils.safelyAllocate(toBlockEnd,
POIFSFileSystem.MAX_RECORD_LENGTH);
+ byte[] padding = IOUtils.safelyAllocate(toBlockEnd,
POIFSFileSystem.getMaxRecordLength());
Arrays.fill(padding, (byte) 0xFF);
os.write(padding);
}
@@ -208,7 +208,7 @@ public final class POIFSDocument impleme
if (getSize() > 0) {
// Get all the data into a single array
- byte[] data = IOUtils.safelyAllocate(getSize(),
POIFSFileSystem.MAX_RECORD_LENGTH);
+ byte[] data = IOUtils.safelyAllocate(getSize(),
POIFSFileSystem.getMaxRecordLength());
int offset = 0;
for (ByteBuffer buffer : _stream) {
int length = Math.min(_block_size, data.length - offset);
Modified:
poi/trunk/poi/src/main/java/org/apache/poi/poifs/filesystem/POIFSFileSystem.java
URL:
http://svn.apache.org/viewvc/poi/trunk/poi/src/main/java/org/apache/poi/poifs/filesystem/POIFSFileSystem.java?rev=1894516&r1=1894515&r2=1894516&view=diff
==============================================================================
---
poi/trunk/poi/src/main/java/org/apache/poi/poifs/filesystem/POIFSFileSystem.java
(original)
+++
poi/trunk/poi/src/main/java/org/apache/poi/poifs/filesystem/POIFSFileSystem.java
Sat Oct 23 21:13:08 2021
@@ -62,7 +62,7 @@ public class POIFSFileSystem extends Blo
implements POIFSViewable, Closeable {
//arbitrarily selected; may need to increase
private static final int DEFAULT_MAX_RECORD_LENGTH = 100_000;
- static int MAX_RECORD_LENGTH = DEFAULT_MAX_RECORD_LENGTH;
+ private static int MAX_RECORD_LENGTH = DEFAULT_MAX_RECORD_LENGTH;
private static final Logger LOG =
LogManager.getLogger(POIFSFileSystem.class);
Modified:
poi/trunk/poi/src/main/java/org/apache/poi/poifs/property/PropertyTable.java
URL:
http://svn.apache.org/viewvc/poi/trunk/poi/src/main/java/org/apache/poi/poifs/property/PropertyTable.java?rev=1894516&r1=1894515&r2=1894516&view=diff
==============================================================================
---
poi/trunk/poi/src/main/java/org/apache/poi/poifs/property/PropertyTable.java
(original)
+++
poi/trunk/poi/src/main/java/org/apache/poi/poifs/property/PropertyTable.java
Sat Oct 23 21:13:08 2021
@@ -45,9 +45,6 @@ import static org.apache.logging.log4j.u
public final class PropertyTable implements BATManaged {
private static final Logger LOG =
LogManager.getLogger(PropertyTable.class);
- //arbitrarily selected; may need to increase
- private static final int MAX_RECORD_LENGTH = 100_000;
-
private final HeaderBlock _header_block;
private final List<Property> _properties = new ArrayList<>();
private final POIFSBigBlockSize _bigBigBlockSize;
@@ -91,7 +88,7 @@ public final class PropertyTable impleme
bb.array().length == _bigBigBlockSize.getBigBlockSize()) {
data = bb.array();
} else {
- data =
IOUtils.safelyAllocate(_bigBigBlockSize.getBigBlockSize(), MAX_RECORD_LENGTH);
+ data =
IOUtils.safelyAllocate(_bigBigBlockSize.getBigBlockSize(),
POIFSFileSystem.getMaxRecordLength());
int toRead = data.length;
if (bb.remaining() < _bigBigBlockSize.getBigBlockSize()) {
Modified:
poi/trunk/poi/src/main/java/org/apache/poi/poifs/storage/HeaderBlock.java
URL:
http://svn.apache.org/viewvc/poi/trunk/poi/src/main/java/org/apache/poi/poifs/storage/HeaderBlock.java?rev=1894516&r1=1894515&r2=1894516&view=diff
==============================================================================
--- poi/trunk/poi/src/main/java/org/apache/poi/poifs/storage/HeaderBlock.java
(original)
+++ poi/trunk/poi/src/main/java/org/apache/poi/poifs/storage/HeaderBlock.java
Sat Oct 23 21:13:08 2021
@@ -29,6 +29,7 @@ import org.apache.poi.poifs.common.POIFS
import org.apache.poi.poifs.filesystem.FileMagic;
import org.apache.poi.poifs.filesystem.NotOLE2FileException;
import org.apache.poi.poifs.filesystem.OfficeXmlFileException;
+import org.apache.poi.poifs.filesystem.POIFSFileSystem;
import org.apache.poi.util.HexDump;
import org.apache.poi.util.IOUtils;
import org.apache.poi.util.IntegerField;
@@ -42,9 +43,6 @@ import org.apache.poi.util.ShortField;
*/
public final class HeaderBlock implements HeaderBlockConstants {
- //arbitrarily selected; may need to increase
- private static final int MAX_RECORD_LENGTH = 100_000;
-
private static final byte _default_value = ( byte ) 0xFF;
/**
@@ -108,7 +106,7 @@ public final class HeaderBlock implement
// Fetch the rest of the block if needed
if(bigBlockSize.getBigBlockSize() != 512) {
int rest = bigBlockSize.getBigBlockSize() - 512;
- byte[] tmp = IOUtils.safelyAllocate(rest, MAX_RECORD_LENGTH);
+ byte[] tmp = IOUtils.safelyAllocate(rest,
POIFSFileSystem.getMaxRecordLength());
IOUtils.readFully(stream, tmp);
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]