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 2023/05/23 06:31:52 UTC
svn commit: r1910010 - /pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/PDFStreamParser.java
Author: lehmi
Date: Tue May 23 06:31:52 2023
New Revision: 1910010
URL: http://svn.apache.org/viewvc?rev=1910010&view=rev
Log:
PDFBOX-5606: close resource if a fatal error occurs
Modified:
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/PDFStreamParser.java
Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/PDFStreamParser.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/PDFStreamParser.java?rev=1910010&r1=1910009&r2=1910010&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/PDFStreamParser.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/PDFStreamParser.java Tue May 23 06:31:52 2023
@@ -98,7 +98,7 @@ public class PDFStreamParser extends Bas
skipSpaces();
if (source.isEOF())
{
- source.close();
+ close();
return null;
}
char c = (char) source.peek();
@@ -124,6 +124,7 @@ public class PDFStreamParser extends Bas
{
LOG.warn("Stop reading invalid dictionary from content stream at offset "
+ source.getPosition());
+ close();
return null;
}
}
@@ -141,6 +142,7 @@ public class PDFStreamParser extends Bas
{
LOG.warn("Stop reading invalid array from content stream at offset "
+ source.getPosition());
+ close();
return null;
}
case '(':
@@ -253,8 +255,10 @@ public class PDFStreamParser extends Bas
String id = Character.toString((char) source.read()) + (char) source.read();
if (!id.equals(OperatorName.BEGIN_INLINE_IMAGE_DATA))
{
+ long currentPosition = source.getPosition();
+ close();
throw new IOException( "Error: Expected operator 'ID' actual='" + id +
- "' at stream offset " + source.getPosition());
+ "' at stream offset " + currentPosition);
}
ByteArrayOutputStream imageData = new ByteArrayOutputStream();
if( isWhitespace() )
@@ -430,4 +434,18 @@ public class PDFStreamParser extends Bas
{
return isSpaceOrReturn(source.peek());
}
+
+ /**
+ * Close the underlying resource.
+ *
+ * @throws IOException if something went wrong
+ */
+ public void close() throws IOException
+ {
+ if (source != null && !source.isClosed())
+ {
+ source.close();
+ }
+ }
+
}