You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by le...@apache.org on 2018/10/21 10:59:47 UTC

svn commit: r1844478 - in /pdfbox/trunk: ./ pdfbox/src/main/java/org/apache/pdfbox/pdfparser/InputStreamSource.java

Author: lehmi
Date: Sun Oct 21 10:59:47 2018
New Revision: 1844478

URL: http://svn.apache.org/viewvc?rev=1844478&view=rev
Log:
PDFBOX-4351: handle premature end of stream to avoid IOOBE

Modified:
    pdfbox/trunk/   (props changed)
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/InputStreamSource.java

Propchange: pdfbox/trunk/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Sun Oct 21 10:59:47 2018
@@ -1,3 +1,3 @@
-/pdfbox/branches/2.0:1760418,1761484,1762133,1763609,1779822,1780783,1780789,1782684,1784450,1792784,1795704,1795712,1799081-1799082,1814046,1814285,1814459,1824914,1825811,1825820,1825912
+/pdfbox/branches/2.0:1760418,1761484,1762133,1763609,1779822,1780783,1780789,1782684,1784450,1792784,1795704,1795712,1799081-1799082,1814046,1814285,1814459,1824914,1825811,1825820,1825912,1844477
 /pdfbox/branches/no-awt:1618517-1621410
 /pdfbox/no-awt:1618514-1618516

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/InputStreamSource.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/InputStreamSource.java?rev=1844478&r1=1844477&r2=1844478&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/InputStreamSource.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/InputStreamSource.java Sun Oct 21 10:59:47 2018
@@ -52,16 +52,30 @@ final class InputStreamSource implements
     public int read(byte[] b) throws IOException
     {
         int n = input.read(b);
-        position += n;
-        return n;
+        if (n > 0)
+        {
+            position += n;
+            return n;
+        }
+        else
+        {
+            return -1;
+        }
     }
 
     @Override
     public int read(byte[] b, int offset, int length) throws IOException
     {
         int n = input.read(b, offset, length);
-        position += n;
-        return n;
+        if (n > 0)
+        {
+            position += n;
+            return n;
+        }
+        else
+        {
+            return -1;
+        }
     }
 
     @Override
@@ -111,9 +125,16 @@ final class InputStreamSource implements
         while (len > 0)
         {
             int n = this.read(bytes, off, len);
-            off += n;
-            len -= n;
-            position += n;
+            if (n > 0)
+            {
+                off += n;
+                len -= n;
+                position += n;
+            }
+            else
+            {
+                break;
+            }
         }
         return bytes;
     }