From 64b25cf736bc5f9b9f6d548f0694fb76fe805d0c Mon Sep 17 00:00:00 2001 From: Jesse Wilson Date: Wed, 22 Sep 2010 10:28:27 -0700 Subject: [PATCH] Fix problem where Base64InputStream single-byte reads were unsigned. Change-Id: Ibdfb77a283300baa61738fe98aa1c9f29eaf976f http://b/3026478 --- core/java/android/util/Base64InputStream.java | 2 +- core/tests/coretests/src/android/util/Base64Test.java | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/core/java/android/util/Base64InputStream.java b/core/java/android/util/Base64InputStream.java index da3911d8a6aa0..e9dac243c0262 100644 --- a/core/java/android/util/Base64InputStream.java +++ b/core/java/android/util/Base64InputStream.java @@ -112,7 +112,7 @@ public class Base64InputStream extends FilterInputStream { if (outputStart >= outputEnd) { return -1; } else { - return coder.output[outputStart++]; + return coder.output[outputStart++] & 0xff; } } diff --git a/core/tests/coretests/src/android/util/Base64Test.java b/core/tests/coretests/src/android/util/Base64Test.java index 0f5b09094347f..53368d40104e3 100644 --- a/core/tests/coretests/src/android/util/Base64Test.java +++ b/core/tests/coretests/src/android/util/Base64Test.java @@ -16,6 +16,9 @@ package android.util; +import java.io.IOException; +import java.io.InputStream; +import java.util.Arrays; import junit.framework.TestCase; import java.io.ByteArrayInputStream; @@ -404,6 +407,14 @@ public class Base64Test extends TestCase { } } + /** http://b/3026478 */ + public void testSingleByteReads() throws IOException { + InputStream in = new Base64InputStream( + new ByteArrayInputStream("/v8=".getBytes()), Base64.DEFAULT); + assertEquals(254, in.read()); + assertEquals(255, in.read()); + } + /** * Tests that Base64OutputStream produces exactly the same results * as calling Base64.encode/.decode on an in-memory array.