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 2020/06/22 20:23:19 UTC

svn commit: r1879097 - in /poi/trunk/src: java/org/apache/poi/util/IOUtils.java scratchpad/src/org/apache/poi/hwpf/HWPFDocumentCore.java

Author: tallison
Date: Mon Jun 22 20:23:19 2020
New Revision: 1879097

URL: http://svn.apache.org/viewvc?rev=1879097&view=rev
Log:
improve memory safety in HWPFDocumentCore

Modified:
    poi/trunk/src/java/org/apache/poi/util/IOUtils.java
    poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/HWPFDocumentCore.java

Modified: poi/trunk/src/java/org/apache/poi/util/IOUtils.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/util/IOUtils.java?rev=1879097&r1=1879096&r2=1879097&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/util/IOUtils.java (original)
+++ poi/trunk/src/java/org/apache/poi/util/IOUtils.java Mon Jun 22 20:23:19 2020
@@ -188,7 +188,7 @@ public final class IOUtils {
                 baos.write(buffer, 0, readBytes);
             }
 
-            checkByteSizeLimit(readBytes);
+            checkByteSizeLimit(totalBytes);
         } while (totalBytes < len && readBytes > -1);
 
         if (maxLength != Integer.MAX_VALUE && totalBytes == maxLength) {

Modified: poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/HWPFDocumentCore.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/HWPFDocumentCore.java?rev=1879097&r1=1879096&r2=1879097&view=diff
==============================================================================
--- poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/HWPFDocumentCore.java (original)
+++ poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/HWPFDocumentCore.java Mon Jun 22 20:23:19 2020
@@ -67,7 +67,7 @@ public abstract class HWPFDocumentCore e
     protected static final String STREAM_TABLE_1 = "1Table";
 
     //arbitrarily selected; may need to increase
-    private static final int MAX_RECORD_LENGTH = 1_000_000;
+    private static final int MAX_RECORD_LENGTH = 500_000_000;
 
     /**
      * Size of the not encrypted part of the FIB
@@ -328,7 +328,7 @@ public abstract class HWPFDocumentCore e
 
         try (DocumentInputStream dis = dir.createDocumentInputStream(documentProps);
              InputStream is = isEncrypted ? getDecryptedStream(dis, streamSize, encryptionOffset) : dis) {
-            return IOUtils.toByteArray(is, Math.min(streamSize, len));
+            return IOUtils.toByteArray(is, Math.min(streamSize, len), MAX_RECORD_LENGTH);
         } catch (GeneralSecurityException e) {
             throw new IOException("Unable to decrypt data for entry: "+name, e);
         }



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@poi.apache.org
For additional commands, e-mail: commits-help@poi.apache.org