summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Jaesung Chung <jaesung@google.com> 2016-03-23 02:30:27 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2016-03-23 02:30:29 +0000
commit203ed4d50070beaaa463b87d367613da6b7d2ee1 (patch)
tree68da2a8bf6821a51b9779d0e0a5b5ed44e85e329
parent01e236b984322242887f15c445604275e9b5781e (diff)
parent42ac0d00153cf8cd4c89cb9397c937be4e8f36e3 (diff)
Merge "ExifInterface: fix regression of re-writing JPEG" into nyc-dev
-rw-r--r--media/java/android/media/ExifInterface.java10
-rw-r--r--media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/unit/ExifInterfaceTest.java8
2 files changed, 7 insertions, 11 deletions
diff --git a/media/java/android/media/ExifInterface.java b/media/java/android/media/ExifInterface.java
index dbedf340096f..83a6c74dc98c 100644
--- a/media/java/android/media/ExifInterface.java
+++ b/media/java/android/media/ExifInterface.java
@@ -1191,10 +1191,6 @@ public class ExifInterface {
++bytesRead;
while (true) {
marker = dataInputStream.readByte();
- if (marker == -1) {
- Log.w(TAG, "Reading JPEG has ended unexpectedly");
- break;
- }
if (marker != MARKER) {
throw new IOException("Invalid marker:" + Integer.toHexString(marker & 0xff));
}
@@ -1329,10 +1325,6 @@ public class ExifInterface {
while (true) {
byte marker = dataInputStream.readByte();
- if (marker == -1) {
- Log.w(TAG, "Reading JPEG has ended unexpectedly");
- break;
- }
if (marker != MARKER) {
throw new IOException("Invalid marker");
}
@@ -1357,6 +1349,8 @@ public class ExifInterface {
}
}
// Copy non-EXIF APP1 segment.
+ dataOutputStream.writeByte(MARKER);
+ dataOutputStream.writeByte(marker);
dataOutputStream.writeUnsignedShort(length + 2);
if (length >= 6) {
length -= 6;
diff --git a/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/unit/ExifInterfaceTest.java b/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/unit/ExifInterfaceTest.java
index 5bd607922c81..6207f7d59809 100644
--- a/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/unit/ExifInterfaceTest.java
+++ b/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/unit/ExifInterfaceTest.java
@@ -417,13 +417,15 @@ public class ExifInterfaceTest extends AndroidTestCase {
testExifInterfaceForRaw(LG_G4_ISO_800_DNG, R.array.lg_g4_iso_800_dng);
}
- public void testCorruptedImage() throws Throwable {
+ public void testDoNotFailOnCorruptedImage() throws Throwable {
+ // To keep the compatibility with old versions of ExifInterface, even on a corrupted image,
+ // it shouldn't raise any exceptions except an IOException when unable to open a file.
byte[] bytes = new byte[1024];
try {
new ExifInterface(new ByteArrayInputStream(bytes));
- fail("Should not reach here!");
+ // Always success
} catch (IOException e) {
- // Success
+ fail("Should not reach here!");
}
}