From 7f2ad765cffffecffa2ae8ea36ea8fd357f41d90 Mon Sep 17 00:00:00 2001 From: Harald Kuhr Date: Thu, 31 May 2012 16:24:17 +0200 Subject: [PATCH] TMI-XXX: Made the PSD XMP parser slightly more lenient. --- .../imageio/plugins/psd/PSDXMPData.java | 18 ++++++++++++------ .../services/javax.imageio.spi.ImageReaderSpi | 2 +- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDXMPData.java b/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDXMPData.java index 209cdb6b..2e14bc31 100644 --- a/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDXMPData.java +++ b/imageio/imageio-psd/src/main/java/com/twelvemonkeys/imageio/plugins/psd/PSDXMPData.java @@ -2,13 +2,11 @@ package com.twelvemonkeys.imageio.plugins.psd; import com.twelvemonkeys.imageio.metadata.Directory; import com.twelvemonkeys.imageio.metadata.xmp.XMPReader; +import com.twelvemonkeys.imageio.stream.ByteArrayImageInputStream; import com.twelvemonkeys.lang.StringUtil; import javax.imageio.stream.ImageInputStream; -import java.io.ByteArrayInputStream; -import java.io.IOException; -import java.io.InputStreamReader; -import java.io.Reader; +import java.io.*; import java.nio.charset.Charset; /** @@ -32,9 +30,17 @@ final class PSDXMPData extends PSDImageResource { @Override protected void readData(final ImageInputStream pInput) throws IOException { data = new byte[(int) size]; // TODO: Fix potential overflow, or document why that can't happen (read spec) - //pInput.readFully(data); + pInput.readFully(data); - directory = new XMPReader().read(pInput); + // Chop off potential trailing null-termination/padding that SAX parsers don't like... + int len = data.length; + for (; len > 0; len--) { + if (data[len - 1] != 0) { + break; + } + } + + directory = new XMPReader().read(new ByteArrayImageInputStream(data, 0, len)); } @Override diff --git a/imageio/imageio-psd/src/main/resources/META-INF/services/javax.imageio.spi.ImageReaderSpi b/imageio/imageio-psd/src/main/resources/META-INF/services/javax.imageio.spi.ImageReaderSpi index 21a911af..002f3d14 100755 --- a/imageio/imageio-psd/src/main/resources/META-INF/services/javax.imageio.spi.ImageReaderSpi +++ b/imageio/imageio-psd/src/main/resources/META-INF/services/javax.imageio.spi.ImageReaderSpi @@ -1 +1 @@ -com.twelvemonkeys.imageio.plugins.psd.PSDImageReaderSpi \ No newline at end of file +com.twelvemonkeys.imageio.plugins.psd.PSDImageReaderSpi