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 2023/06/03 08:57:06 UTC
svn commit: r1910196 - in /pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdfparser: InputStreamSource.java PDFStreamParser.java RandomAccessSource.java SequentialSource.java
Author: tilman
Date: Sat Jun 3 08:57:06 2023
New Revision: 1910196
URL: http://svn.apache.org/viewvc?rev=1910196&view=rev
Log:
PDFBOX-5606: avoid parser access on closed stream; add isClosed() method
Modified:
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/InputStreamSource.java
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/PDFStreamParser.java
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/RandomAccessSource.java
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/SequentialSource.java
Modified: pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/InputStreamSource.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/InputStreamSource.java?rev=1910196&r1=1910195&r2=1910196&view=diff
==============================================================================
--- pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/InputStreamSource.java (original)
+++ pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/InputStreamSource.java Sat Jun 3 08:57:06 2023
@@ -29,6 +29,7 @@ final class InputStreamSource implements
{
private final PushbackInputStream input;
private int position;
+ private boolean isOpen = true;
/**
* Constructor.
@@ -144,5 +145,12 @@ final class InputStreamSource implements
public void close() throws IOException
{
input.close();
+ isOpen = false;
+ }
+
+ @Override
+ public boolean isClosed() throws IOException
+ {
+ return !isOpen;
}
}
Modified: pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/PDFStreamParser.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/PDFStreamParser.java?rev=1910196&r1=1910195&r2=1910196&view=diff
==============================================================================
--- pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/PDFStreamParser.java (original)
+++ pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/PDFStreamParser.java Sat Jun 3 08:57:06 2023
@@ -135,6 +135,10 @@ public class PDFStreamParser extends Bas
*/
public Object parseNextToken() throws IOException
{
+ if (seqSource.isClosed())
+ {
+ return null;
+ }
skipSpaces();
if (seqSource.isEOF())
{
@@ -272,7 +276,7 @@ public class PDFStreamParser extends Bas
if (!(value instanceof COSBase))
{
LOG.warn("Unexpected token in inline image dictionary at offset " +
- seqSource.getPosition());
+ (seqSource.isClosed() ? "EOF" : seqSource.getPosition()));
break;
}
imageParams.setItem((COSName) nextToken, (COSBase) value);
Modified: pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/RandomAccessSource.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/RandomAccessSource.java?rev=1910196&r1=1910195&r2=1910196&view=diff
==============================================================================
--- pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/RandomAccessSource.java (original)
+++ pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/RandomAccessSource.java Sat Jun 3 08:57:06 2023
@@ -26,6 +26,7 @@ import org.apache.pdfbox.io.RandomAccess
final class RandomAccessSource implements SequentialSource
{
private final RandomAccessRead reader;
+ private boolean isOpen = true;
/**
* Constructor.
@@ -101,5 +102,12 @@ final class RandomAccessSource implement
public void close() throws IOException
{
reader.close();
+ isOpen = false;
+ }
+
+ @Override
+ public boolean isClosed() throws IOException
+ {
+ return !isOpen;
}
}
Modified: pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/SequentialSource.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/SequentialSource.java?rev=1910196&r1=1910195&r2=1910196&view=diff
==============================================================================
--- pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/SequentialSource.java (original)
+++ pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/SequentialSource.java Sat Jun 3 08:57:06 2023
@@ -112,4 +112,11 @@ interface SequentialSource extends Close
* @throws IOException If there is an error reading the next byte.
*/
boolean isEOF() throws IOException;
+
+ /**
+ * Returns true if this source has been closed.
+ *
+ * @return true if the source has been closed
+ */
+ boolean isClosed() throws IOException;
}