You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by je...@apache.org on 2014/06/01 19:51:55 UTC
svn commit: r1599019 - in /pdfbox/branches/1.8: ./
pdfbox/src/main/java/org/apache/pdfbox/encoding/SingleByteCharset.java
pdfbox/src/test/java/org/apache/pdfbox/encoding/PDFDocEncodingCharsetTest.java
Author: jeremias
Date: Sun Jun 1 17:51:54 2014
New Revision: 1599019
URL: http://svn.apache.org/r1599019
Log:
PDFBOX-2102: Fix for IllegalArgumentException when the last character in the buffer is an undefined character.
Modified:
pdfbox/branches/1.8/ (props changed)
pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/encoding/SingleByteCharset.java
pdfbox/branches/1.8/pdfbox/src/test/java/org/apache/pdfbox/encoding/PDFDocEncodingCharsetTest.java
Propchange: pdfbox/branches/1.8/
------------------------------------------------------------------------------
Merged /pdfbox/trunk:r1599016
Modified: pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/encoding/SingleByteCharset.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/encoding/SingleByteCharset.java?rev=1599019&r1=1599018&r2=1599019&view=diff
==============================================================================
--- pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/encoding/SingleByteCharset.java (original)
+++ pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/encoding/SingleByteCharset.java Sun Jun 1 17:51:54 2014
@@ -137,6 +137,7 @@ public class SingleByteCharset extends C
ch = toUnicodeMap[b & 0xFF];
if (ch == REPLACEMENT_CHARACTER)
{
+ in.position(in.position() - 1);
return CoderResult.unmappableForLength(1);
}
out.put(ch);
Modified: pdfbox/branches/1.8/pdfbox/src/test/java/org/apache/pdfbox/encoding/PDFDocEncodingCharsetTest.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/1.8/pdfbox/src/test/java/org/apache/pdfbox/encoding/PDFDocEncodingCharsetTest.java?rev=1599019&r1=1599018&r2=1599019&view=diff
==============================================================================
--- pdfbox/branches/1.8/pdfbox/src/test/java/org/apache/pdfbox/encoding/PDFDocEncodingCharsetTest.java (original)
+++ pdfbox/branches/1.8/pdfbox/src/test/java/org/apache/pdfbox/encoding/PDFDocEncodingCharsetTest.java Sun Jun 1 17:51:54 2014
@@ -17,6 +17,9 @@
package org.apache.pdfbox.encoding;
import java.io.UnsupportedEncodingException;
+import java.nio.ByteBuffer;
+import java.nio.CharBuffer;
+import java.nio.charset.Charset;
import junit.framework.TestCase;
@@ -60,6 +63,23 @@ public class PDFDocEncodingCharsetTest e
assertEquals("Bad??char", decoded);
}
+ /**
+ * Checking for behaviour with undefined character at the end of the buffer.
+ * This used to cause an IllegalArgumentException.
+ */
+ public void testUnencodedAtEnd()
+ {
+ byte[] encoded = new byte[] {0x00, 0x01, 0x02, 0x7F}; //0x7F is undefined
+ String decoded = toString(encoded, 0, encoded.length, PDFDocEncodingCharset.INSTANCE);
+ assertEquals("\u0000\u0001\u0002\uFFFD", decoded);
+ }
+
+ private static String toString(byte[] data, int offset, int length, Charset charset)
+ {
+ CharBuffer charBuffer = charset.decode(ByteBuffer.wrap(data, offset, length));
+ return charBuffer.toString();
+ }
+
private void compareEncoded(byte[] encoded, int[] expected)
{
assertEquals(expected.length, encoded.length);