From 6796910091ee6c12afd0d551910e0837a35f0861 Mon Sep 17 00:00:00 2001 From: Oliver Schmidtmer Date: Tue, 16 Feb 2016 22:52:57 +0100 Subject: [PATCH] Fix reading bad SubIFDs again --- .../imageio/metadata/exif/EXIFReader.java | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/exif/EXIFReader.java b/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/exif/EXIFReader.java index 792d3b9a..2c872b45 100644 --- a/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/exif/EXIFReader.java +++ b/imageio/imageio-metadata/src/main/java/com/twelvemonkeys/imageio/metadata/exif/EXIFReader.java @@ -105,16 +105,27 @@ public final class EXIFReader extends MetadataReader { } for (int i = 0; i < entryCount; i++) { - EXIFEntry entry = readEntry(pInput); + try { + EXIFEntry entry = readEntry(pInput); - if (entry != null) { - entries.add(entry); + if (entry != null) { + entries.add(entry); + } + } + catch (IIOException e) { + break; } } if (readLinked) { if (nextOffset == -1) { - nextOffset = pInput.readUnsignedInt(); + try { + nextOffset = pInput.readUnsignedInt(); + } + catch (EOFException e) { + // catch EOF here as missing EOF marker + nextOffset = 0; + } } // Read linked IFDs