Author: lehmi
Date: Sat Jun  1 12:07:28 2024
New Revision: 1918096

URL: http://svn.apache.org/viewvc?rev=1918096&view=rev
Log:
PDFBOX-5675: fix error handling

Modified:
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/filter/FlateFilter.java
    
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/filter/FlateFilterDecoderStream.java

Modified: 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/filter/FlateFilter.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/filter/FlateFilter.java?rev=1918096&r1=1918095&r2=1918096&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/filter/FlateFilter.java 
(original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/filter/FlateFilter.java 
Sat Jun  1 12:07:28 2024
@@ -19,12 +19,8 @@ package org.apache.pdfbox.filter;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
-import java.util.zip.DataFormatException;
 import java.util.zip.Deflater;
 import java.util.zip.DeflaterOutputStream;
-
-import org.apache.logging.log4j.Logger;
-import org.apache.logging.log4j.LogManager;
 import org.apache.pdfbox.cos.COSDictionary;
 
 /**
@@ -36,8 +32,6 @@ import org.apache.pdfbox.cos.COSDictiona
  */
 final class FlateFilter extends Filter
 {
-    private static final Logger LOG = LogManager.getLogger(FlateFilter.class);
-
     @Override
     public DecodeResult decode(InputStream encoded, OutputStream decoded,
                                          COSDictionary parameters, int index) 
throws IOException
@@ -48,16 +42,6 @@ final class FlateFilter extends Filter
         {
             decoderStream.transferTo(Predictor.wrapPredictor(decoded, 
decodeParams));
         }
-        catch (IOException e)
-        {
-            // if the stream is corrupt a DataFormatException may occur
-            if (e.getCause() instanceof DataFormatException)
-            {
-                LOG.error("FlateFilter: stop reading corrupt stream due to a 
DataFormatException");
-            }
-            // re-throw the exception
-            throw e;
-        }
         return new DecodeResult(parameters);
     }
 

Modified: 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/filter/FlateFilterDecoderStream.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/filter/FlateFilterDecoderStream.java?rev=1918096&r1=1918095&r2=1918096&view=diff
==============================================================================
--- 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/filter/FlateFilterDecoderStream.java
 (original)
+++ 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/filter/FlateFilterDecoderStream.java
 Sat Jun  1 12:07:28 2024
@@ -45,6 +45,7 @@ public final class FlateFilterDecoderStr
     private byte[] decodedData = new byte[4096];
     // use nowrap mode to bypass zlib-header and checksum to avoid a 
DataFormatException
     private final Inflater inflater = new Inflater(true);
+    private boolean dataDecoded = false;
 
     /**
      * Constructor.
@@ -82,22 +83,23 @@ public final class FlateFilterDecoderStr
                 return false;
             }
         }
-        boolean dataWritten = false;
         try
         {
             bytesDecoded = inflater.inflate(decodedData);
+            dataDecoded |= bytesDecoded > 0;
         }
         catch (DataFormatException exception)
         {
-            if (dataWritten)
+            isEOF = true;
+            if (dataDecoded)
             {
-                // some data could be read -> don't throw an exception
+                // some data could be decoded -> don't throw an exception
                 LOG.warn("FlateFilter: premature end of stream due to a 
DataFormatException");
                 return false;
             }
             else
             {
-                // nothing could be read -> re-throw exception
+                // nothing could be read -> re-throw exception wrapped in an 
IOException
                 throw new IOException(exception);
             }
         }


Reply via email to