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 2020/09/20 12:40:09 UTC

svn commit: r1881868 - in /pdfbox/trunk/pdfbox/src: main/java/org/apache/pdfbox/io/RandomAccessReadBuffer.java test/java/org/apache/pdfbox/encryption/TestPublicKeyEncryption.java

Author: lehmi
Date: Sun Sep 20 12:40:09 2020
New Revision: 1881868

URL: http://svn.apache.org/viewvc?rev=1881868&view=rev
Log:
PDFBOX-4836: don't rely on InputStream.available() for an initial check if any data is available

Modified:
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/io/RandomAccessReadBuffer.java
    pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/encryption/TestPublicKeyEncryption.java

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/io/RandomAccessReadBuffer.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/io/RandomAccessReadBuffer.java?rev=1881868&r1=1881867&r2=1881868&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/io/RandomAccessReadBuffer.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/io/RandomAccessReadBuffer.java Sun Sep 20 12:40:09 2020
@@ -61,9 +61,9 @@ public class RandomAccessReadBuffer impl
     private RandomAccessReadBuffer(int definedChunkSize)
     {
         // starting with one chunk
-        bufferList = new ArrayList<>();
         chunkSize = definedChunkSize;
         currentBuffer = ByteBuffer.allocate(chunkSize);
+        bufferList = new ArrayList<>();
         bufferList.add(currentBuffer);
     }
 
@@ -75,10 +75,10 @@ public class RandomAccessReadBuffer impl
     public RandomAccessReadBuffer(byte[] input)
     {
         // this is a special case. Wrap the given byte array to one ByteBuffer.
-        bufferList = new ArrayList<>(1);
         chunkSize = input.length;
         size = chunkSize;
         currentBuffer = ByteBuffer.wrap(input);
+        bufferList = new ArrayList<>(1);
         bufferList.add(currentBuffer);
     }
 
@@ -92,7 +92,7 @@ public class RandomAccessReadBuffer impl
     {
         this();
         int bytesRead = 0;
-        while (input.available() > 0)
+        while (true)
         {
             int remainingBytes = chunkSize;
             int offset = 0;
@@ -110,6 +110,7 @@ public class RandomAccessReadBuffer impl
             else
             {
                 currentBuffer.limit(offset);
+                break;
             }
         }
         seek(0);

Modified: pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/encryption/TestPublicKeyEncryption.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/encryption/TestPublicKeyEncryption.java?rev=1881868&r1=1881867&r2=1881868&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/encryption/TestPublicKeyEncryption.java (original)
+++ pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/encryption/TestPublicKeyEncryption.java Sun Sep 20 12:40:09 2020
@@ -29,13 +29,11 @@ import java.util.Collection;
 import javax.crypto.Cipher;
 
 import org.apache.pdfbox.Loader;
-import org.apache.pdfbox.io.IOUtils;
 import org.apache.pdfbox.io.MemoryUsageSetting;
 import org.apache.pdfbox.pdmodel.PDDocument;
 import org.apache.pdfbox.pdmodel.encryption.AccessPermission;
 import org.apache.pdfbox.pdmodel.encryption.PublicKeyProtectionPolicy;
 import org.apache.pdfbox.pdmodel.encryption.PublicKeyRecipient;
-import org.apache.pdfbox.pdmodel.encryption.PublicKeySecurityHandler;
 import org.apache.pdfbox.text.PDFTextStripper;
 
 import org.junit.After;
@@ -333,8 +331,7 @@ public class TestPublicKeyEncryption
     public void testReadPubkeyEncryptedAES128() throws IOException
     {
         URL url = new URL("https://issues.apache.org/jira/secure/attachment/13011682/B2-Adobe-128-aes-sec.pdf");
-        byte[] ba = IOUtils.toByteArray(url.openStream()); // because of bug in PDFBOX-4836
-        try (PDDocument doc = Loader.loadPDF(ba,
+        try (PDDocument doc = Loader.loadPDF(url.openStream(),
                 "w!z%C*F-JaNdRgUk",
                 TestPublicKeyEncryption.class.getResourceAsStream("PDFBOX-4421-keystore.pfx"),
                 "testnutzer"))
@@ -358,8 +355,7 @@ public class TestPublicKeyEncryption
     public void testReadPubkeyEncryptedAES256() throws IOException
     {
         URL url = new URL("https://issues.apache.org/jira/secure/attachment/13011752/B2-AES-256-secured.pdf");
-        byte[] ba = IOUtils.toByteArray(url.openStream()); // because of bug in PDFBOX-4836
-        try (PDDocument doc = Loader.loadPDF(ba, 
+        try (PDDocument doc = Loader.loadPDF(url.openStream(),
                 "w!z%C*F-JaNdRgUk",
                 TestPublicKeyEncryption.class.getResourceAsStream("PDFBOX-4421-keystore.pfx"),
                 "testnutzer"))