You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by ti...@apache.org on 2014/08/29 08:38:00 UTC

svn commit: r1621245 - in /pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox: io/RandomAccessFileOutputStream.java pdfparser/BaseParser.java pdfparser/NonSequentialPDFParser.java

Author: tilman
Date: Fri Aug 29 06:38:00 2014
New Revision: 1621245

URL: http://svn.apache.org/r1621245
Log:
PDFBOX-2296: don't call createFilteredStream() with an expected length if we know that length is wrong; code cleanup

Modified:
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/io/RandomAccessFileOutputStream.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/BaseParser.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/NonSequentialPDFParser.java

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/io/RandomAccessFileOutputStream.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/io/RandomAccessFileOutputStream.java?rev=1621245&r1=1621244&r2=1621245&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/io/RandomAccessFileOutputStream.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/io/RandomAccessFileOutputStream.java Fri Aug 29 06:38:00 2014
@@ -75,12 +75,14 @@ public class RandomAccessFileOutputStrea
     }
 
     /**
-     * The number of bytes written to the stream.
+     * The number of bytes written or expected in the stream.
      *
-     * @return The number of bytes read to the stream.
+     * @return The number of bytes written or expected in the stream.
      */
     public long getLength()
     {
+        //FIXME this is really dangerous, as it returns a wrong value if
+        // the actual length isn't the expected length
         long length = -1;
         if( expectedLength instanceof COSNumber )
         {

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/BaseParser.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/BaseParser.java?rev=1621245&r1=1621244&r2=1621245&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/BaseParser.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/BaseParser.java Fri Aug 29 06:38:00 2014
@@ -566,7 +566,7 @@ public abstract class BaseParser
                         }
                         // close and create new filtered stream
                         IOUtils.closeQuietly(out);
-                        out = stream.createFilteredStream( streamLength );
+                        out = stream.createFilteredStream();
                         // scan until we find endstream:
                         readUntilEndStream( new EndstreamOutputStream(out) );
                     }
@@ -995,7 +995,7 @@ public abstract class BaseParser
      *
      * @throws IOException If there is an error reading from the stream.
      */
-    private final COSString parseCOSHexString() throws IOException
+    private COSString parseCOSHexString() throws IOException
     {
         final StringBuilder sBuf = new StringBuilder();
         while( true )

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/NonSequentialPDFParser.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/NonSequentialPDFParser.java?rev=1621245&r1=1621244&r2=1621245&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/NonSequentialPDFParser.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/NonSequentialPDFParser.java Fri Aug 29 06:38:00 2014
@@ -117,8 +117,8 @@ public class NonSequentialPDFParser exte
      */
     protected SecurityHandler securityHandler = null;
 
-    private String keyStoreFilename = null;
-    private String alias = null;
+    private final String keyStoreFilename = null;
+    private final String alias = null;
     private String password = "";
     private int readTrailBytes = DEFAULT_TRAIL_BYTECOUNT; // how many trailing
                                                           // bytes to read for
@@ -129,7 +129,7 @@ public class NonSequentialPDFParser exte
      * needed; cons: some information of catalog might not be available (e.g. outline). Catalog parsing without pages is
      * not an option since a number of entries will also refer to page objects (like OpenAction).
      */
-    private boolean parseMinimalCatalog = "true".equals(System.getProperty(SYSPROP_PARSEMINIMAL));
+    private final boolean parseMinimalCatalog = "true".equals(System.getProperty(SYSPROP_PARSEMINIMAL));
 
     private boolean initialParseDone = false;
     private boolean allPagesParsed = false;
@@ -266,11 +266,10 @@ public class NonSequentialPDFParser exte
      */
     private File createTmpFile(InputStream input) throws IOException
     {
-        File tmpFile = null;
         FileOutputStream fos = null;
         try
         {
-            tmpFile = File.createTempFile(TMP_FILE_PREFIX, ".pdf");
+            File tmpFile = File.createTempFile(TMP_FILE_PREFIX, ".pdf");
             fos = new FileOutputStream(tmpFile);
             IOUtils.copy(input, fos);
             isTmpPDFFile = true;
@@ -520,7 +519,7 @@ public class NonSequentialPDFParser exte
 
     // ------------------------------------------------------------------------
     /** Get current offset in file at which next byte would be read. */
-    private final long getPdfSourceOffset()
+    private long getPdfSourceOffset()
     {
         return pdfSource.getOffset();
     }
@@ -557,7 +556,7 @@ public class NonSequentialPDFParser exte
         // pdfSource.close();
     }
 
-    private final void closeFileStream() throws IOException
+    private void closeFileStream() throws IOException
     {
         if (pdfSource != null)
         {
@@ -985,7 +984,7 @@ public class NonSequentialPDFParser exte
     /**
      * Creates a unique object id using object number and object generation number. (requires object number < 2^31))
      */
-    private final long getObjectId(final COSObject obj)
+    private long getObjectId(final COSObject obj)
     {
         return (obj.getObjectNumber().longValue() << 32) | obj.getGenerationNumber().longValue();
     }
@@ -994,7 +993,7 @@ public class NonSequentialPDFParser exte
      * Adds all from newObjects to toBeParsedList if it is not an COSObject or we didn't add this COSObject already
      * (checked via addedObjects).
      */
-    private final void addNewToList(final Queue<COSBase> toBeParsedList,
+    private void addNewToList(final Queue<COSBase> toBeParsedList,
             final Collection<COSBase> newObjects, final Set<Long> addedObjects)
     {
         for (COSBase newObject : newObjects)
@@ -1561,7 +1560,7 @@ public class NonSequentialPDFParser exte
             }
             if (useReadUntilEnd)
             {
-                out = stream.createFilteredStream(streamLengthObj);
+                out = stream.createFilteredStream();
                 readUntilEndStream(new EndstreamOutputStream(out));
             }
             String endStream = readString();
@@ -1830,7 +1829,7 @@ public class NonSequentialPDFParser exte
             return 0;
         }
         // the offset seems to be wrong -> seek backward to find the object we are looking for
-        long currentOffset = objectOffset;
+        long currentOffset;
         for (int i = 1; i < 20; i++)
         {
             currentOffset = objectOffset - (i * 10);