You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by se...@apache.org on 2010/09/21 20:07:01 UTC
svn commit: r999521 -
/commons/proper/sanselan/trunk/src/main/java/org/apache/sanselan/formats/jpeg/iptc/IPTCParser.java
Author: sebb
Date: Tue Sep 21 18:07:01 2010
New Revision: 999521
URL: http://svn.apache.org/viewvc?rev=999521&view=rev
Log:
SANSELAN-17 (partial) Detect invalid block size
Modified:
commons/proper/sanselan/trunk/src/main/java/org/apache/sanselan/formats/jpeg/iptc/IPTCParser.java
Modified: commons/proper/sanselan/trunk/src/main/java/org/apache/sanselan/formats/jpeg/iptc/IPTCParser.java
URL: http://svn.apache.org/viewvc/commons/proper/sanselan/trunk/src/main/java/org/apache/sanselan/formats/jpeg/iptc/IPTCParser.java?rev=999521&r1=999520&r2=999521&view=diff
==============================================================================
--- commons/proper/sanselan/trunk/src/main/java/org/apache/sanselan/formats/jpeg/iptc/IPTCParser.java (original)
+++ commons/proper/sanselan/trunk/src/main/java/org/apache/sanselan/formats/jpeg/iptc/IPTCParser.java Tue Sep 21 18:07:01 2010
@@ -320,6 +320,14 @@ public class IPTCParser extends BinaryFi
Debug.debug("blockSize", blockSize + " (0x"
+ Integer.toHexString(blockSize) + ")");
+ /*
+ * doesn't catch cases where blocksize is invalid but is still less than bytes.length
+ * but will at least prevent OutOfMemory errors
+ */
+ if(blockSize > bytes.length) {
+ throw new ImageReadException("Invalid Block Size : "+blockSize+ " > "+bytes.length);
+ }
+
byte[] blockData = bis.readByteArray(blockSize,
"Invalid Image Resource Block data", verbose, strict);
if (null == blockData)