Author: tilman
Date: Tue Jan 11 17:47:05 2022
New Revision: 1896921
URL: http://svn.apache.org/viewvc?rev=1896921&view=rev
Log:
PDFBOX-5360: allow streams smaller than 20 bytes
Modified:
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/filter/CCITTFaxFilter.java
Modified:
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/filter/CCITTFaxFilter.java
URL:
http://svn.apache.org/viewvc/pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/filter/CCITTFaxFilter.java?rev=1896921&r1=1896920&r2=1896921&view=diff
==============================================================================
---
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/filter/CCITTFaxFilter.java
(original)
+++
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/filter/CCITTFaxFilter.java
Tue Jan 11 17:47:05 2022
@@ -16,7 +16,6 @@
*/
package org.apache.pdfbox.filter;
-import java.io.EOFException;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
@@ -72,12 +71,8 @@ final class CCITTFaxFilter extends Filte
type = TIFFExtension.COMPRESSION_CCITT_T4; // Group 3 1D
byte[] streamData = new byte[20];
int bytesRead = encoded.read(streamData);
- if (bytesRead != streamData.length)
- {
- throw new EOFException("Can't read " + streamData.length + "
bytes");
- }
PushbackInputStream pushbackInputStream = new
PushbackInputStream(encoded, streamData.length);
- pushbackInputStream.unread(streamData);
+ pushbackInputStream.unread(streamData, 0, bytesRead);
encoded = pushbackInputStream;
if (streamData[0] != 0 || (streamData[1] >> 4 != 1 &&
streamData[1] != 1))
{
@@ -85,7 +80,7 @@ final class CCITTFaxFilter extends Filte
// found
type = TIFFExtension.COMPRESSION_CCITT_MODIFIED_HUFFMAN_RLE;
short b = (short) (((streamData[0] << 8) + (streamData[1] &
0xff)) >> 4);
- for (int i = 12; i < 160; i++)
+ for (int i = 12; i < bytesRead * 8; i++)
{
b = (short) ((b << 1) + ((streamData[(i / 8)] >> (7 - (i %
8))) & 0x01));
if ((b & 0xFFF) == 1)