aboutsummaryrefslogtreecommitdiffstats
path: root/src/java/org/apache/poi/hssf
diff options
context:
space:
mode:
authorAndreas Beeker <kiwiwings@apache.org>2018-04-27 21:38:19 +0000
committerAndreas Beeker <kiwiwings@apache.org>2018-04-27 21:38:19 +0000
commitf94245e9d876c49462bc66bdc573ea11160b617a (patch)
treeb3ad7edff8643e1fdb024a568f1e071f98232537 /src/java/org/apache/poi/hssf
parent48f03cd45abcef0ca26e91e2080f430557a2c70b (diff)
downloadpoi-f94245e9d876c49462bc66bdc573ea11160b617a.tar.gz
poi-f94245e9d876c49462bc66bdc573ea11160b617a.zip
#59893 - Forbid calls to InputStream.available
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1830400 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'src/java/org/apache/poi/hssf')
-rw-r--r--src/java/org/apache/poi/hssf/record/ObjRecord.java8
-rw-r--r--src/java/org/apache/poi/hssf/record/crypto/Biff8DecryptingStream.java8
2 files changed, 7 insertions, 9 deletions
diff --git a/src/java/org/apache/poi/hssf/record/ObjRecord.java b/src/java/org/apache/poi/hssf/record/ObjRecord.java
index e41e6cbc27..d1b4ab4d11 100644
--- a/src/java/org/apache/poi/hssf/record/ObjRecord.java
+++ b/src/java/org/apache/poi/hssf/record/ObjRecord.java
@@ -17,14 +17,13 @@
package org.apache.poi.hssf.record;
-import java.io.ByteArrayInputStream;
import java.util.ArrayList;
import java.util.List;
import org.apache.poi.util.HexDump;
import org.apache.poi.util.LittleEndian;
+import org.apache.poi.util.LittleEndianByteArrayInputStream;
import org.apache.poi.util.LittleEndianByteArrayOutputStream;
-import org.apache.poi.util.LittleEndianInputStream;
import org.apache.poi.util.RecordFormatException;
/**
@@ -85,8 +84,7 @@ public final class ObjRecord extends Record implements Cloneable {
*/
subrecords = new ArrayList<>();
- ByteArrayInputStream bais = new ByteArrayInputStream(subRecordData);
- LittleEndianInputStream subRecStream = new LittleEndianInputStream(bais);
+ LittleEndianByteArrayInputStream subRecStream = new LittleEndianByteArrayInputStream(subRecordData);
CommonObjectDataSubRecord cmo = (CommonObjectDataSubRecord)SubRecord.createSubRecord(subRecStream, 0);
subrecords.add(cmo);
while (true) {
@@ -96,7 +94,7 @@ public final class ObjRecord extends Record implements Cloneable {
break;
}
}
- int nRemainingBytes = bais.available();
+ final int nRemainingBytes = subRecordData.length-subRecStream.getReadIndex();
if (nRemainingBytes > 0) {
// At present (Oct-2008), most unit test samples have (subRecordData.length % 2 == 0)
_isPaddedToQuadByteMultiple = subRecordData.length % MAX_PAD_ALIGNMENT == 0;
diff --git a/src/java/org/apache/poi/hssf/record/crypto/Biff8DecryptingStream.java b/src/java/org/apache/poi/hssf/record/crypto/Biff8DecryptingStream.java
index 3c5be4267c..99c5d46dc9 100644
--- a/src/java/org/apache/poi/hssf/record/crypto/Biff8DecryptingStream.java
+++ b/src/java/org/apache/poi/hssf/record/crypto/Biff8DecryptingStream.java
@@ -32,6 +32,7 @@ import org.apache.poi.util.LittleEndian;
import org.apache.poi.util.LittleEndianConsts;
import org.apache.poi.util.LittleEndianInput;
import org.apache.poi.util.RecordFormatException;
+import org.apache.poi.util.SuppressForbidden;
public final class Biff8DecryptingStream implements BiffHeaderInput, LittleEndianInput {
@@ -39,7 +40,6 @@ public final class Biff8DecryptingStream implements BiffHeaderInput, LittleEndia
//arbitrarily selected; may need to increase
private static final int MAX_RECORD_LENGTH = 100_000;
- private final EncryptionInfo info;
private ChunkedCipherInputStream ccis;
private final byte buffer[] = new byte[LittleEndianConsts.LONG_SIZE];
private boolean shouldSkipEncryptionOnCurrentRecord;
@@ -54,9 +54,8 @@ public final class Biff8DecryptingStream implements BiffHeaderInput, LittleEndia
stream = new PushbackInputStream(in, initialOffset);
((PushbackInputStream)stream).unread(initialBuf);
}
-
- this.info = info;
- Decryptor dec = this.info.getDecryptor();
+
+ Decryptor dec = info.getDecryptor();
dec.setChunkSize(RC4_REKEYING_INTERVAL);
ccis = (ChunkedCipherInputStream)dec.getDataStream(stream, Integer.MAX_VALUE, 0);
@@ -69,6 +68,7 @@ public final class Biff8DecryptingStream implements BiffHeaderInput, LittleEndia
}
@Override
+ @SuppressForbidden("just delegating")
public int available() {
return ccis.available();
}