diff options
author | Owen Lin <owenlin@android.com> | 2012-08-10 01:22:12 -0700 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2012-08-10 01:22:13 -0700 |
commit | b6f5404c42bdba2a7e9c695362e2e623fb2eff46 (patch) | |
tree | 3395aa0b0a1196f4bd10402fab7330537c097556 /src | |
parent | fdc13c38bed810979fbed5629e2bf53b5c10470e (diff) | |
parent | 441606c1291d4042c298862683d268521bb881d6 (diff) | |
download | android_packages_apps_Snap-b6f5404c42bdba2a7e9c695362e2e623fb2eff46.tar.gz android_packages_apps_Snap-b6f5404c42bdba2a7e9c695362e2e623fb2eff46.tar.bz2 android_packages_apps_Snap-b6f5404c42bdba2a7e9c695362e2e623fb2eff46.zip |
Merge "Fix ExifParser bug when APP0 exists in Jpeg file" into gb-ub-photos-arches
Diffstat (limited to 'src')
-rw-r--r-- | src/com/android/gallery3d/exif/ExifParser.java | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/src/com/android/gallery3d/exif/ExifParser.java b/src/com/android/gallery3d/exif/ExifParser.java index 534f2f6d9..f536a55f4 100644 --- a/src/com/android/gallery3d/exif/ExifParser.java +++ b/src/com/android/gallery3d/exif/ExifParser.java @@ -17,6 +17,7 @@ package com.android.gallery3d.exif; import java.io.DataInputStream; +import java.io.EOFException; import java.io.IOException; import java.io.InputStream; import java.nio.ByteOrder; @@ -27,6 +28,7 @@ public class ExifParser { private static final short SOI = (short) 0xFFD8; // SOI marker of JPEG private static final short APP1 = (short) 0xFFE1; // APP1 marker of JPEG + private static final short APP0 = (short) 0xFFE0; // APP0 marder of JPEG private static final int EXIF_HEADER = 0x45786966; // EXIF header "Exif" private static final short EXIF_HEADER_TAIL = (short) 0x0000; // EXIF header in APP1 @@ -79,7 +81,16 @@ public class ExifParser { throw new ExifInvalidFormatException("Invalid JPEG format"); } - if (dataStream.readShort() != APP1) { + short tag = dataStream.readShort(); + if (tag == APP0) { + int length = dataStream.readUnsignedShort(); + if ((length - 2) != dataStream.skip(length - 2)) { + throw new EOFException(); + } + tag = dataStream.readShort(); + } + + if (tag != APP1) { return false; } |