BoundedInputStream deprecation warnings

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1918175 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
PJ Fanning 2024-06-05 16:31:36 +00:00
parent 160fc0122c
commit f56eea8e45
5 changed files with 37 additions and 6 deletions

View File

@ -21,6 +21,7 @@ import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.UncheckedIOException;
import java.util.Arrays;
import java.util.Map;
import java.util.function.Supplier;
@ -102,13 +103,21 @@ public class ExOleObjStg extends PositionDependentRecordAtom implements PersistR
* Opens an input stream which will decompress the data on the fly.
*
* @return the data input stream.
* @throws UncheckedIOException if the data size exceeds the expected size.
*/
public InputStream getData() {
if (isCompressed()) {
int size = LittleEndian.getInt(_data);
InputStream compressedStream = new ByteArrayInputStream(_data, 4, _data.length);
return new BoundedInputStream(new InflaterInputStream(compressedStream), size);
try {
return BoundedInputStream.builder()
.setInputStream(new InflaterInputStream(compressedStream))
.setMaxCount(size)
.get();
} catch (IOException e) {
throw new UncheckedIOException(e);
}
} else {
return new ByteArrayInputStream(_data, 0, _data.length);
}

View File

@ -205,7 +205,7 @@ public class CryptoAPIDecryptor extends Decryptor {
for (StreamDescriptorEntry entry : entries) {
sbis.seek(entry.streamOffset);
sbis.setBlock(entry.block);
try (InputStream is = new BoundedInputStream(sbis, entry.streamSize)) {
try (InputStream is = BoundedInputStream.builder().setInputStream(sbis).setMaxCount(entry.streamSize).get()) {
fsOut.createDocument(is, entry.streamName);
}
}

View File

@ -16,7 +16,9 @@
==================================================================== */
package org.apache.poi.poifs.crypt.cryptoapi;
import java.io.IOException;
import java.io.InputStream;
import java.io.UncheckedIOException;
import java.security.GeneralSecurityException;
import javax.crypto.Cipher;
@ -40,8 +42,22 @@ import org.apache.poi.util.Internal;
cipher = encryptor.initCipherForBlock(null, 0);
}
/**
* Returns the encrypted data.
*
* @param maxSize
* @return the encrypted data
* @throws UncheckedIOException if an I/O error occurs
*/
public InputStream toInputStream(long maxSize) {
return new BoundedInputStream(toInputStream(), maxSize);
try {
return BoundedInputStream.builder()
.setInputStream(toInputStream())
.setMaxCount(maxSize)
.get();
} catch (IOException e) {
throw new UncheckedIOException(e);
}
}
public void setSize(int count) {

View File

@ -140,8 +140,14 @@ public class StandardDecryptor extends Decryptor {
long cipherLen = (_length/blockSize + 1) * blockSize;
Cipher cipher = getCipher(getSecretKey());
InputStream boundedDis = new BoundedInputStream(dis, cipherLen);
return new BoundedInputStream(new CipherInputStream(boundedDis, cipher), _length);
final InputStream boundedDis = BoundedInputStream.builder()
.setInputStream(dis)
.setMaxCount(cipherLen)
.get();
return BoundedInputStream.builder()
.setInputStream(new CipherInputStream(boundedDis, cipher))
.setMaxCount(_length)
.get();
}
/**

View File

@ -142,7 +142,7 @@ public final class IOUtils {
stream.mark(limit);
try (UnsynchronizedByteArrayOutputStream bos = UnsynchronizedByteArrayOutputStream.builder().setBufferSize(limit).get()) {
copy(new BoundedInputStream(stream, limit), bos);
copy(BoundedInputStream.builder().setInputStream(stream).setMaxCount(limit).get(), bos);
int readBytes = bos.size();
if (readBytes == 0) {