]> source.dussan.org Git - poi.git/commitdiff
[bug-65639] take BYTE_ARRAY_MAX_OVERRIDE into account in IOUtils#toByteArray
authorPJ Fanning <fanningpj@apache.org>
Sat, 19 Feb 2022 20:50:51 +0000 (20:50 +0000)
committerPJ Fanning <fanningpj@apache.org>
Sat, 19 Feb 2022 20:50:51 +0000 (20:50 +0000)
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1898231 13f79535-47bb-0310-9956-ffa450edef68

poi/src/main/java/org/apache/poi/util/IOUtils.java

index d5088334645a1d1fc62a4ffd15c735447a85117c..fa4cb785bdc381c78127cd5f9a0001693afb42d5 100644 (file)
@@ -96,6 +96,10 @@ public final class IOUtils {
         }
     }
 
+    private static int getByteArrayLimit() {
+        return BYTE_ARRAY_MAX_OVERRIDE < 0 ? Integer.MAX_VALUE : BYTE_ARRAY_MAX_OVERRIDE;
+    }
+
     /**
      * Peeks at the first N bytes of the stream. Returns those bytes, but
      *  with the stream unaffected. Requires a stream that supports mark/reset,
@@ -130,14 +134,15 @@ public final class IOUtils {
     }
 
     /**
-     * Reads all the data from the input stream, and returns the bytes read.
+     * Reads all the data from the input stream, and returns the bytes read. If {@link #setByteArrayMaxOverride(int)}
+     * is used then that limit is applied and this call will fail if the array size exceeds the configured limit.
      *
      * @param stream The byte stream of data to read.
      * @return A byte array with the read bytes.
      * @throws IOException If reading data fails or EOF is encountered too early for the given length.
      */
     public static byte[] toByteArray(InputStream stream) throws IOException {
-        return toByteArray(stream, Integer.MAX_VALUE);
+        return toByteArray(stream, getByteArrayLimit());
     }
 
     /**
@@ -150,7 +155,7 @@ public final class IOUtils {
      * @throws IOException If reading data fails or EOF is encountered too early for the given length.
      */
     public static byte[] toByteArray(InputStream stream, final int length) throws IOException {
-        return toByteArray(stream, length, Integer.MAX_VALUE);
+        return toByteArray(stream, length, getByteArrayLimit());
     }