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)